PHP オブジェクト指向プログラミングでは、常に class test{public static function test(){ に遭遇します。 self: :func();static::func();}パブリック静的関数 func(){} }しかし、自己と静的の違いを知っていますか?実際、違いは非常に簡単で、d をいくつか書くだけです。"/> PHP オブジェクト指向プログラミングでは、常に class test{public static function test(){ に遭遇します。 self: :func();static::func();}パブリック静的関数 func(){} }しかし、自己と静的の違いを知っていますか?実際、違いは非常に簡単で、d をいくつか書くだけです。">

ホームページ >バックエンド開発 >PHPチュートリアル >PHPオブジェクト指向におけるselfとstaticの違い

PHPオブジェクト指向におけるselfとstaticの違い

WBOY
WBOYオリジナル
2016-07-29 08:51:06970ブラウズ

data-id="1190000005060322" data-license="sa">

PHP オブジェクト指向プログラミングでは、必ず

<code>class test{
  public static function test(){
    self::func();

    static::func();
  }

  public static function func(){}
}</code>

に遭遇しますが、self と static の違いはご存知ですか?

実際、違いは非常に簡単です。理解するにはいくつかのデモを作成するだけで済みます。

self 用のデモ:

<code>class Car
{
  public static function model(){
    self::getModel();
  }

  protected static function getModel(){
    echo "This is a car model";
  }
}

Car::model();

Class Taxi extends Car
{
  protected static function getModel(){
    echo "This is a Taxi model";
  }
}

Taxi::model();</code>

出力を取得します

<code>This is a car model
This is a car model
</code>

self が引き続き親のメソッドを呼び出すことがわかります。サブクラスのクラス

static のデモ

<code>class Car
{
  public static function model(){
    static::getModel();
  }

  protected static function getModel(){
    echo "This is a car model";
  }
}

Car::model();

Class Taxi extends Car
{
  protected static function getModel(){
    echo "This is a Taxi model";
  }
}

Taxi::model();
</code>

出力を取得します

<code>This is a car model
This is a Taxi model
</code>

static を呼び出すと、サブクラスが親クラスのメソッドを呼び出した場合でも、そのメソッドが呼び出されることがわかります。親クラスのメソッドは引き続きサブクラスのメソッドになります (なんとも…) static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。。)

在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。

总结呢就是:self只能引用当前类中的方法,而static

PHP 5.3 バージョン以前では、static と self の間にはまだ少し違いがありました。具体的には、結局のところ、それだけでした。バージョン 7 が優勢です。もう理解できなくなります。

要約すると、self は現在のクラス内のメソッドのみを参照できますが、static キーワードを使用すると、関数は実行時にクラス内のメソッドを動的にバインドできます。
  1. 参考

http://www.programmerinterview.com/index.php/php-questions/php-self-vs-static/

上記では、PHP オブジェクト指向における self と static の違いを、内容の側面も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。 🎜 🎜 🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:php之文件上传和下载次の記事:php脚本配置