类关键字
this
1、是指向当前对象的指针
2、$this
在静态方法中不可用
列:
class Z
{
var $name = '张三';
public function getName($n)
{
echo $this->name = $n;
}
}
$z = new Z;
echo $z->name;
self
1、是指向当前类的指针,类似与$this
关键字,但$this
是需要类实例化以后才可以使用,self
可以直接访问当前类中的内部成员。
2、self
一般用来访问类中的:静态成员(属性和方法),常量
3、使用:
self::
方法
self::
属性
static
1、声明类属性或方法为static
静态,就可以不实例化类而直接访问。
2、静态属性不能通过已实例化的对象来访问(但静态方法可以)。
3、由于静态方法不需要通过对象即可调用,所以伪变量 $this
在静态方法中不可用。
4、静态属性不可以由对象通过 -> 操作符来访问。
5、使用:
5.1、类内部访问静态成员
类名称::静态成员
self::
静态成员
static::
静态成员
5.2、类外部访问静态成员
类名称 ::
静态成员
class Box
{
static $name = '基类';
public static function getName()
{
echo self::$name; //本身代码片段这个类
// echo static::$name; //实例化的这个类
echo get_called_class();
}
}
//static self
class A extends Box
{
static $name = '派生类';
}
$a = new A;
echo $a->getName();
const
1、可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
2、常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。
3、类似PHP外部定义常量的关键字define()
;Const
只能修饰类当中的成员属性!
class B
{
const color='red';
public function setColor($c)
{
echo $this->color = $c;
}
}
$b = new B;
echo $b->setColor('blue');
parent
parent::
可用于调用父类中定义的成员方法。
final
当定义类的时候该类将不能被继承,当用来定义方法的时候该方法将不能被重载。
注意:
self和static区别:
self调用的就是本身代码片段这个类,
static调用的是当前实例化的那个类。