我对构造函数在 PHP 中的工作方式有点困惑。
我有一个带有构造函数的类,当我实例化一个新对象时会调用它。
$foo = new Foo($args);
__construct($params)
在类中调用Foo
它并执行适当的初始化代码。
但是,当我使用该类调用静态函数时,会再次调用构造函数。
$bar = Foo::some_function(); //runs the constructor from Foo
这会导致构造函数执行,运行我只打算在创建新Foo
对象时使用的对象初始化代码。
我错过了构造函数如何工作的重点吗?__construct()
或者当我使用类进行静态函数调用时有没有办法阻止执行?
我应该使用“工厂”函数来进行对象初始化吗?如果是这样,那么构造函数的意义何在?
::EDIT:: 我有一个表单,用户可以将照片上传到相册(create_photo.php)和一个可以查看相册的区域(view_photos.php)。表单提交后:
$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
Photo 构造函数创建并保存照片。但是在 view_photo.php 中,当我调用时:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
这导致 Photo 的构造函数运行!