首頁 >後端開發 >php教程 >PHP `self` 與 `$this`:何時分別使用?

PHP `self` 與 `$this`:何時分別使用?

Barbara Streisand
Barbara Streisand原創
2024-12-24 01:17:10224瀏覽

PHP `self` vs. `$this`: When to Use Each?

何時在PHP 中使用'Self' 和'$This'

在PHP 中,了解'self' 和'$This ' 之間的區別這一點至關重要。 'Self' 指的是當前類,而 '$this' 指的是當前物件。

何時使用 'Self':

  • 存取靜態成員(變數或方法):

    class MyClass {
        static $static_member = 10;
    }
    echo MyClass::$static_member; // Output: 10
  • 呼叫父類別方法:

    class ChildClass extends ParentClass {
        public function myMethod() {
            self::parentMethod(); // Calls the parent class method
        }
    }

何時使用'$This':

  • 正在存取非靜態成員:

    class MyClass {
        private $instance_member = 20;
    }
    $obj = new MyClass();
    echo $obj->instance_member; // Output: 20
  • 呼叫實例方法:

    class MyClass {
        public function myMethod() {
            echo $this->instance_member; // Accesses the instance member
        }
    }
  • 呼叫實例方法:
  • 多態:從衍生類別呼叫實例方法:

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            echo 'DerivedClass::myMethod()';
        }
    }
    $baseObj = new BaseClass();
    $derivedObj = new DerivedClass();
    $baseObj->myMethod(); // Output: 'BaseClass::myMethod()'
    $derivedObj->myMethod(); // Output: 'DerivedClass::myMethod()'
  • 抑制多態性:在衍生類別中使用「self」呼叫父類別方法:

    class BaseClass {
        public function myMethod() {
            echo 'BaseClass::myMethod()';
        }
    }
    class DerivedClass extends BaseClass {
        override public function myMethod() {
            parent::myMethod(); // Calls the BaseClass's myMethod() using self::
        }
    }
    $derivedObj = new DerivedClass();
    $derivedObj->myMethod(); // Output: 'BaseClass::myMethod()'

以上是PHP `self` 與 `$this`:何時分別使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn