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

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

Barbara Streisand
發布: 2024-12-24 01:17:10
原創
180 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板