PHP後期静的バインディングのself:制限例分析
本論文の例はPHP後期の静的バインディングのself:制限について述べる。皆さんに参考にしてあげます。具体的には以下の通りです。
ここで後期静的な縛りについて話したいです。
公式文書では、このように定義されています。
「後期バインディング」とは、static::現在の方法の所在を定義するクラスではなく、実際の運転時に計算するという意味です。静的方法の呼び出しにも用いることができるので、「静的結合」とも呼ぶことができる。
ここでは、公式文書の例でselfを説明したいです。制限:
self:例
A
staticの例:
B
気をつけてください。ここで使うのは
ここで私は PHPについてもっと興味のある読者は、本駅のテーマを見てもいいです。「php対象プログラム設計入門教程」、「PHP配列(Aray)操作テクニック大全」、「PHP基本文法入門教程」、「PHP演算と演算子の使い方のまとめ」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ」
本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。
ここで後期静的な縛りについて話したいです。
self::
とstatic
との比較説明をしたいです。公式文書では、このように定義されています。
「後期バインディング」とは、static::現在の方法の所在を定義するクラスではなく、実際の運転時に計算するという意味です。静的方法の呼び出しにも用いることができるので、「静的結合」とも呼ぶことができる。
ここでは、公式文書の例でselfを説明したいです。制限:
self:例
class A{
public static function who(){
echo __CLASS__;
}
public static function test(){
self::who();
}
}
class B extends A{
public static function who(){
echo __class__;
}
}
$B=new B();
$B->test();`
出力結果は:A
staticの例:
class A{
public static function who(){
echo __class__;
}
public static function test(){
static::who();
}
}
class B extends A{
public static function who(){
echo __class__;
}
}
$B=new B();
$B->test();
出力結果は:B
気をつけてください。ここで使うのは
static::
です。これまでPHPでこのような書き方を見たことがないですよね?static::
を見て、思わず思い出しました。self::
parent::
。ここで私は
self::
static::
parent::
を比較したいです。self::
は通常、クラス自体を指すが、selfは、任意のすでに実用化されたオブジェクトを指すものではなく、一般的なselfは、クラス内の静的変数(非静的変数を指すことはできない)を指すが、クラス内の他の静的方法および非静的方法にアクセスすることができる。これは現在のクラスの指針です。parent::
は親類を指すポインタであり、一般に私達はparentを使用して父類の構造関数を呼び出す。しかし、親タイプの他の方法にもアクセスできます。他の静的変数と非静的変数にはアクセスできません。static::
は、一般に後期静的バインディングに用いられる。本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。