برنامه نویسی php
چه زمانی باید از $this و چه زمانی از self استفاده کنیم؟
- $this به شی جاری اشاره می کند . refer to object
- self به کلاس جاری اشاره می کند.refer to class
- $this->member به غیر استاتیک متد و پروپرتی اشاره می کند
- self::member به استاتیک متد و پروپرتی اشاره می کند
مثال های زیر برای درک بهتر این موضوع قرار داده می شود
class X { private $non_static_member = 1; private static $static_member = 2; function __construct() { echo $this->non_static_member . ' ' . self::$static_member; } } new X();
polymorphism با استفاده از $this
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();
suppressing polymorphic behaviour با استفاده از self
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();