PHP面向对象中self与$this的区别

作者: 温新

分类: 【PHP基础】

阅读: 2396

时间: 2020-02-18 15:01:06

1)self代表类; $this代表对象
2)静态成员与静态方法是给类调用的, 不是给$this调用的
3)能用$this的地方一定可以self,能用self的地方不一定能用$this
4)静态方法中一定不能使用$this

类外
访问const(常量)或static(静态)修饰的成员属性或静态方法, 必须使用 :: 操作符, 除此之外的成员必须使用操作符 ->

类内
访问const(常量)或static(静态)修饰的成员, 必须使用 self:: 操作符, 除此之外的成员必须使用操作符 $this->

class ziruchu
{
	public $name = '自如初';
	public static $age = 1;

	public function getMySelf()
	{
		// 输出 自如初
		echo $this->name;

		// 输出 1
		echo self::$age;

		// 输出 1
		echo $this::$age;
	}

	public static function getStaticMethod()
	{
		echo self::$age;
		// echo $this->name;	// 报错
	}
}

// 访问静态成员属性
echo ziruchu::$age;
ziruchu::getStaticMethod();

// 通过实例化对象访问
$zi = new ziruchu();
echo $zi->name;
$zi->getMySelf();
$zi->getStaticMethod();
请登录后再评论