完整答案使用
$this来指代当前对象。用self指当前类。换句话说,$this->member用于非静态成员,self::$member用于静态成员。
这里是一个例子 正确 的使用
$this和
self用于非静态和静态成员变量:
<?phpclass 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用于非静态和静态成员变量:
<?phpclass 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:
<?phpclass 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:
<?phpclass X { function foo() { echo 'X::foo()'; } function bar() { self::foo(); }}class Y extends X { function foo() { echo 'Y::foo()'; }}$x = new Y();$x->bar();?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)