PHP が :: を通じてクラスの非静的メソッドを直接呼び出せるのはなぜですか?
滿天的星座
滿天的星座 2017-06-10 09:47:28
0
7
560

コードは以下のように表示されます:

リーリー

php7.0の実行出力:

リーリー

php5.6の実行出力

リーリー

そのような動作があるのですか?? 原理は何ですか??

滿天的星座
滿天的星座

全員に返信(7)
大家讲道理

http://www.laruence.com/2012/...

ははは、ご回答ありがとうございました。具体的な理由については、上記のブラザー・バードの記事をお読みください。

いいねを押す +0
小葫芦

バージョン 5.6 より前のクラスがインスタンス化せずにメソッドと属性を直接呼び出す場合、メソッドと属性は静的メソッドである必要があります。つまり、Demo クラスがテスト メソッドを直接呼び出したい場合、テストは public static function testing() { }。それ以外の場合は、エラーが報告されます。
7.0以上を宣言する必要があるかどうかはわかりません

いいねを押す +0
扔个三星炸死你

見たのですが、php-cliでは実行できるのですが、php-fpmではまだ実行できません

リーリー
いいねを押す +0
某草草

これは使用できますが、推奨されません。

いいねを押す +0
習慣沉默

php7.0 はこのように書くことができますが、php5.6 では絶対に書けません。self::testing のように書くこともできます

いいねを押す +0
大家讲道理

__callStatic()

いいねを押す +0
学习ing

PHPの実装が厳密ではないと考えられます

$this が非静的メソッドで使用されていない場合は、:: を使用してそれを呼び出すことができます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート