検索

ホームページ  >  に質問  >  本文

PHP が :: を通じてクラスの非静的メソッドを直接呼び出せるのはなぜですか?

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

リーリー

php7.0の実行出力:

リーリー

php5.6の実行出力

リーリー

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

滿天的星座滿天的星座2731日前552

全員に返信(7)返信します

  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

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

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

    返事
    0
  • 高洛峰

    高洛峰2017-06-10 09:49:28

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

    返事
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-10 09:49:28

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

    リーリー

    返事
    0
  • 某草草

    某草草2017-06-10 09:49:28

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

    返事
    0
  • 習慣沉默

    習慣沉默2017-06-10 09:49:28

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:49:28

    __callStatic()

    返事
    0
  • 学习ing

    学习ing2017-06-10 09:49:28

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

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

    返事
    0
  • キャンセル返事