PHP 构造函数和静态函数
我对构造函数在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..);
照片构造函数创建并保存照片。然而,在view_photo.php,当我打电话时:
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
这会导致 Photo 的构造函数运行!