在PHP 5中,使用self和之间有什么区别$this?
self
$this
什么时候合适?
使用$this来指代当前对象。用self指当前类。换句话说, $this->member用于非静态成员,self::$member用于静态成员。
$this->member
self::$member
这里是一个例子 正确 的使用$this和self用于非静态和静态成员变量:
<?php class X { private $non_static_member = 1; private static $static_member = 2; function __construct() { echo $this->non_static_member . ' ' . self::$static_member; } } new X(); ?>
这里是一个例子 不正确 的使用$this和self用于非静态和静态成员变量:
<?php class X { private $non_static_member = 1; private static $static_member = 2; function __construct() { echo self::$non_static_member . ' ' . $this->static_member; } } new X(); ?>
这是带有for成员函数的 多态 示例$this:
<?php class X { function foo() { echo 'X::foo()'; } function bar() { $this->foo(); } } class Y extends X { function foo() { echo 'Y::foo()'; } } $x = new Y(); $x->bar(); ?>
这是通过使用for成员函数来 抑制多态行为 的示例self:
<?php class X { function foo() { echo 'X::foo()'; } function bar() { self::foo(); } } class Y extends X { function foo() { echo 'Y::foo()'; } } $x = new Y(); $x->bar(); ?>