ホームページ >バックエンド開発 >PHPチュートリアル >php における self と static の違い オブジェクト指向プログラミング matlab オブジェクト指向プログラミング c# オブジェクト指向プログラミングのアイデア オブジェクト指向プログラミング言語

php における self と static の違い オブジェクト指向プログラミング matlab オブジェクト指向プログラミング c# オブジェクト指向プログラミングのアイデア オブジェクト指向プログラミング言語

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

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

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

  static::func();
 }

 public static function func(){}
}

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

実際、違いは非常に簡単で、いくつかのデモを書くだけで理解できます。

自分用のデモ:

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 ();
get 出力

This is a car model
This is a car model

から、呼び出されるのは親クラスのメソッドではなく、親クラスで呼び出されるメソッドであることがわかります。クラスメソッドはサブクラスのメソッドにもなります(とても混乱しています...)

PHP5.3バージョンの前には、staticとselfにはまだ少し違いがありました、結局のところ、それはすべてバージョン7のものです。世界。もう理解できなくなります。

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

上記は、オブジェクト指向プログラミングと静的コンテンツを含む、PHP オブジェクト指向プログラミングにおける self と static の違いを紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。