我想要解决的是不好的做法是实例化像
这样的类new Classname();
因为我需要运行类__construct但我不需要使用过去的类。因为类中的其他函数将从__construct中调用。
答案 0 :(得分:5)
它可以工作,但是,作为维护代码的人,我会对此感到非常困惑。一般来说,仅仅实例化一个对象没有副作用,所以我假设我可以删除该行,一切都会正常工作。
我建议您重新考虑代码的结构,因为在__construct
中放置带有副作用的代码绝对不是标准的。
答案 1 :(得分:1)
考虑使用类似的东西:
class Foo
{
public static function do_something()
{
// ...
}
}
Foo::do_something();
虽然你得到的东西会起作用,但不清楚是否应该发生某些事情。
(如果你坚持使用这样的物体,至少每当你这样做时都要清楚地记录下来。)
答案 2 :(得分:0)
好吧,我们假设我们在文件中有一个名为 HelloWorld 的类名。
档案class.HelloWorld.php
class HelloWorld {
function __construct()
{
}
public function doSomething(){
echo "new HelloWorld()->doSomething() was called";
}
public function anotherMethod(){
echo "new HelloWorld()->anotherMethod() was called";
}
}
现在,您可以在运行时实例化该类,而无需将其保存到变量中。
require('class.HelloWorld.php');
// you can just instantiate it and the constructur will be called automatically
(new HelloWorld());
// or you can instantiate it and call other methods
(new HelloWorld())->doSomething();
我不确定垃圾收集器是否会删除实例化的类,但我假设因为这些类没有保存到变量中,所以这不会保存在内存中的某个位置,这将是完美的。 / p>