建站學院(LieHuo.Net)編程文檔 self一般指向當前類的靜態方法和常量,用self::加方法名和常量名方式引用。$this則是指向當前類的實例對象,用$this->加方法名和實例變量方式引用。在一些參數為callback的方法里,可以用字符串'self'形式指向當前類,而不要直接用self,如call_user_func('self', $method)中。
另外self引用的總是當前類的方法和常量,子類調用父類的靜態方法,其中的父類方法中的self仍是指向父類本身的,如果子類的同名方法覆蓋了父類方法,則可以用parent::來引用父類方法。
以下為引用的內容: interface AppConstants { const FOOBAR = 'Hello, World.'; } class Example implements AppConstants { public function test() { echo self :: FOOBAR; } } $obj = new Example(); $obj->test(); // outputs "Hello, world." class MyClass { const NAME = 'Foo'; protected function myFunc() { echo "MyClass::myFunc()"; } static public function display() { echo self :: NAME; } static public function getInstance() { $instance = new self; return $instance; } } class ChildClass extends MyClass { const NAME = 'Child'; // Override parent's definition public function myFunc() { // But still call the parent function parent :: myFunc(); echo "ChildClass::myFunc()"; } } $class = new ChildClass(); $class->myFunc(); echo('Class constant: '); ChildClass :: display(); echo('Object class: '); echo(get_class(ChildClass :: getInstance())); ?> |