تفاوت this و self در برنامه نویسی شی گرا

برنامه نویسی php
چه زمانی باید از $this و چه زمانی از self استفاده کنیم؟

  1. $this به شی جاری اشاره می کند . refer to object
  2. self به کلاس جاری اشاره می کند.refer to class
  3. $this->member به غیر استاتیک متد و پروپرتی اشاره می کند
  4. 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();

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *