实例化类方法而不在PHP中实例化类不再可能?

时间:2012-07-14 05:50:41

标签: php class methods

我不确定我是丢失它还是什么。我最近在需要休息之后跳回PHP,并且我正在尝试做一些我一直能做的事情:调用公共类方法而不实例化类。例如:

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

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

我曾经一直这样做(大约两三年前),但是在我设置的新沙箱环境中跳入PHP 5.3后,我一直在

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

我在这里错过了一些愚蠢的东西吗?或者是没有类实例化的公共类方法的使用在PHP中是否已被弃用?哦,时代变了......

我的总体目标是能够创建属于一组分组的方法,这些类可以在其他方法和类中的全局范围内调用。任何帮助都感激不尽。感谢。

1 个答案:

答案 0 :(得分:6)

你不应该在类上调用实例方法作为静态方法,即使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();
    }
}