我对PHP中的构造函数如何工作有点困惑。PHP的构造函数和静态函数
我有一个构造函数,当我实例化一个新的对象时被调用的类。
$foo = new Foo($args);
__construct($params)
是所谓的类Foo
并执行相应的初始化代码。
但是,当我使用该类来调用一个静态函数时,再次调用该构造函数。
$bar = Foo::some_function(); //runs the constructor from Foo
这将导致构造函数执行,运行,我只打算当我创建一个新的Foo
对象的对象初始化代码。
我错过了构造函数的工作原理吗?或者当我使用该类进行静态函数调用时,有没有办法阻止__construct()
执行?
我应该用“工厂”函数来做对象初始化吗?如果是这样,那么构造函数的重点是什么?
::编辑:: 我有一个表格,用户可以上传照片到相册(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的构造函数运行!
这是不对的。请提供构造函数被静态调用调用的完整代码! – mAu
显示您的真实代码。你写的东西看起来不正确。 –
构造函数的外观如何,您认为它运行的是什么行为? – markus