在不创建对象的情况下运行类构造

时间:2016-07-26 11:37:58

标签: php oop

我有这样的课程设置:

class myClass {
    public function __construct() {
        echo 'foo bar';
    }
}

要运行它,我可以做到:

$object = new myClass;

有没有办法运行该类,以便__construct启动而不用类对象创建新变量。

例如,可以使用以下命令运行基本功能:

functionname();

3 个答案:

答案 0 :(得分:3)

请勿直接致电__construct。如果您需要构造函数中的某些内容发生但您不希望将结果创建为结果,则使用static方法。

class Thing{
    public static function talk(){echo "I talk";}
}
Thing::talk(); // 'I talk'

可以在不需要类的对象实例的情况下调用静态方法。

__construct是PHP中一组特殊方法的一部分,名为Magic Methods。您不直接调用它们,但PHP会在发生某些事件时调用它们。例如,当您在课堂上调用new时,会执行__construct

另一个例子:如果你试图获得一个不存在的属性,__get将被执行(如果找到):

Class Thing{
    public property $name = 'Berry';
    public function __get($propertyName){
        return "$propertyName does not exist!";
    }
}
$t = new Thing();
echo $t->name; // 'Berry'
echo $t->weight; // 'weight does not exist!';

答案 1 :(得分:0)

我不知道为什么你需要这个,但你不需要创建一个变量。您只需创建对象而无需将其存储在任何位置。

class myClass {
    public function __construct() {
        echo 'foo bar';
    }
}

new myClass();

在这种情况下,只会调用构造函数。

答案 2 :(得分:0)

如果你想避免静电,你可以尝试这样的事情:

(new MyClass)->myFunction();