属性的作用域:
1.类外变量不能作用到类内.
2.类中属性可以作用到类方法中.
3.类中变量不能作用到类方法中.
4.类中方法中变量可以给属性赋值.
5.类中变量或属性都不能作用到类外面.
类中变量是遵循变量作用域
<?php
$name=10;
class Person{
public $name;
public function say(){
echo $name;
}
}
$obj=new Person();
$obj->say();
?>
类中属性是遵循变量作用域
<?php
class Person{
public $name=100;
public function say(){
echo $name;
}
}
$obj=new Person();
$obj->say();
?>
类方法中使用类属性前面必须加this
<?php
class Person{
public $name=100;
public function say(){
echo $this->name;
}
}
$obj=new Person();
$obj->say();
?>
**
属性和变量不同
<?php
class Person{
public $name=100;
public function say(){
$name=200;
echo $this->name;
}
}
$obj=new Person();
$obj->say();
?>
结果是
100
属性和变量不同2
<?php
class Person{
public $name=100;
public function say(){
$name=200;
echo $name;
}
}
$obj=new Person();
$obj->say();
?>
**
200
属性和变量不同3
<?php
class Person{
public $name;
public function __construct($n){
$this->name=$n;
}
public function say(){
$name=200;
echo $this->name;
}
}
$obj=new Person(300);
$obj->say();
?>
**
300
属性和变量不同4
<?php
class Person{
public $name;
public function __construct($n){
$this->name=$n;
}
public function say($n){
$name=$n;
echo $this->name;
}
}
$obj=new Person(300);
$obj->say(500);
?>
**
300
属性和变量不同5
<?php
class Person{
public $name;
public function __construct($n){
$this->name=$n;
}
public function say($name){
echo $name;
}
}
$obj=new Person(300);
$obj->say(500);
?>
**
500
属性和变量不同6
<?php
$name=200;
class Person{
public $name;
public function __construct($n){
$this->name=$n;
}
}
$obj=new Person(300);
echo $name;
?>
**
200
属性和变量不同7
<?php
$name=200;
class Person{
public $name;
public function __construct($n){
$name=$n;
}
}
$obj=new Person(300);
echo $name;
?>
**
200