5

私はそれを失っているのか、それとも何なのかわかりません。私は最近、非常に必要な休憩の後、PHP に戻ってきました。クラスをインスタンス化せずに、パブリック クラス メソッドを呼び出すという、常にできることをしようとしています。例:

  class Utils 
  {
    public function getTime() 
    {
      return time();
    }
  }

  $time = Utils::getTime();
  echo $time;

私は常にこれを行っていました (約 2、3 年前) が、セットアップした新しいサンドボックス環境で PHP 5.3 に飛び乗った後、私は取得し続けます。

  Fatal error: Call to undefined function getTime() in /mnt/richard/index.php on line 24

ここでばかげたことを見逃していますか?それとも、クラスのインスタンス化を行わずにパブリック クラス メソッドを使用することは、PHP で非推奨になった機能ですか? ああ、時代は変わった…

私の全体的な目標は、他のメソッドやクラス内のグローバル スコープで呼び出すことができるグループ化されたクラスのセットに属するメソッドを作成できるようにすることです。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

8

PHP で許可されている場合でも、インスタンス メソッドをクラスの静的メソッドとして呼び出すべきではありません。呼び出し時:

 Utils::getTime();

静的コンテキストからインスタンス メソッドを呼び出しています。getTime代わりに次のように定義する必要があります。

class Utils 
{
    public static function getTime() 
    {
       // You can't use $this in here. This is a static function. No instance exists.
       return time();
    }
}
于 2012-07-14T06:10:50.933 に答える