PHP の基礎知識: クラスとオブジェクト 5 静的

WBOY
リリース: 2016-07-29 08:35:44
オリジナル
712 人が閲覧しました

クラスのメンバーまたはメソッドを static として宣言すると、クラスのインスタンス化を必要とせずにアクセスできるようになります。
static として宣言したメンバーは、インスタンス化されたクラス オブジェクトではアクセスできません (ただし、static メソッドは呼び出すことができます)。クラスオブジェクトをインスタンス化せずにそれらを実行します。静的クラスはクラス オブジェクトから呼び出すことはできません。 (クラスの静的メソッドは問題ありません)。 //最初の例では、静的変数が非静的メソッドで呼び出されていることに注意してください。唯一の違いは、self の使用です。 self を使用することは可能ですか????わかりません???テストが必要です。
static 宣言は、PHP4 との互換性のために、可視性宣言が使用されない場合、public として宣言されているかのように扱われます。
static 宣言は、明示的宣言である必要があります。 PHP4との互換性を保つため、明示的に宣言されたオブジェクトやメソッドがない場合は、publicとして宣言されたものとみなされます。
静的メソッドはオブジェクトのインスタンスを作成しなくても呼び出すことができるため、疑似変数 $this は静的として宣言されたメソッド内では使用できません。
静的メソッドは呼び出すためにクラス オブジェクトをインスタンス化する必要がないため、疑似変数 $this は使用できません。静的メソッドの は、 では使用できません。実際、静的メソッド呼び出しはコンパイル時に解決されます。明示的なクラス名を使用する場合、メソッドはすでに完全に識別されており、呼び出しが self によって行われる場合、self は現在のクラスに変換されます。ここでも継承ルールは適用されません。実際には、静的メソッドの呼び出しはコンパイル時に決定されます。 (この段落の翻訳方法がわかりません。???わかりません???)
私が長い間求めていた翻訳は次のとおりです:
--------- ------------- ------------------------
実際には、静的メソッドの呼び出しはコンパイル時に解決されます。時間。明示的なクラス名を使用すると、メソッドは継承ルールを適用しなくても完全に認識されます。単独で呼び出された場合、それ自体が現在のクラス (コードが属するクラス) に解決されます。ここでも継承ルールは適用されません。
しかし、新たな質問:
ここには継承がないかもしれないのに、なぜ継承ルールが記載されているのですか? (???理解できません???)
矢印演算子 -> を使用してオブジェクトを介して静的プロパティにアクセスすることはできません。非静的メソッドを静的に呼び出すと、E_STRICT レベルの警告が生成されます。
静的メンバーは、矢印記号 -> を使用してクラスのオブジェクトから呼び出すことはできません。非静的メソッドを静的に呼び出すと、E_STRICT レベルの警告が発生します。
静的メンバーの例:


コードをコピー コードは次のとおりです:

class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;//ここに注意してください!!!!
//return $my_static;//このように書くと間違いありません。テストする必要があります
}
}
class Bar extends Foo
{
public function fooStatic() {
parent::$my_static;//ここに注意してください!!!!
}
}
print Foo:: $my_static " n ";
$foo = new Foo();
print $foo->staticValue() . " n";
print $foo->my_static . " n"; // 未定義の「プロパティ」 my_static
/ / $foo::my_static は使用できません
print Bar::$my_static . " n";
print $bar->fooStatic() .
class Foo {
public static function aStaticMethod() {
// // ...
}
}
Foo::aStaticMethod();
以上、PHP の基礎知識「クラスとオブジェクト 5 静的」を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート