为什么我不能在方法之外运行类代码?

时间:2015-01-07 14:28:47

标签: php function methods static

我听说当对象尚未实例化或需要在类中调用某些东西时使用静态方法。

class Show_files{
    static private $person = 1;     
    echo Show_files::$person++;
}

我想这样表示2,我知道如果我把它放在一个实例或一个方法中它会起作用,但是为什么它现在不能像现在一样工作?

4 个答案:

答案 0 :(得分:0)

您必须将此echo放在方法中。然后在其他地方调用它(例如,你的观点)。请注意:http://php.net/manual/en/language.oop5.basic.php

答案 1 :(得分:0)

您正在尝试在类中执行代码,但在方法之外。那是非法语法。唯一可以去的东西"外面"方法是属性定义:

class foo {
    static $x = 0; // simple variable creation, fixed values. A-OK
    public $y = 1+1; // illegal - expressions not permitted
    private $z = self::$y++; // double-illegal 
    echo self::$z // illegal - executing code
}

$ z定义在两个级别上是非法的 - 你不能通过在对象仍在被解析/定义时读取来创建$ z,并且你不能执行代码" (即属性定义中的"表达式")。

答案 2 :(得分:0)

认为它与php语法不一致 - 你必须把它放在一个方法中。 实施例

Show_files{
static private $person = 1;     
public static function show()
 {
   echo self::person++;
 }
}

然后Show_files :: show()

答案 3 :(得分:0)

将其更改为

class Show_files{
   static private $person = 1;     

   public static function getPersonCount() {
        self::$person++;
        echo self::$person;
        return;
   }

}

并将其命名为

  Show_files::getPersonCount();