gpt4 book ai didi

PHP 构造函数和静态函数

转载 作者:IT王子 更新时间:2023-10-29 00:02:16 25 4
gpt4 key购买 nike

我对构造函数在 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 的构造函数运行!

最佳答案

我看不出有什么可以重复您的问题。

参见演示:http://codepad.org/h2TMPYUV

代码:

class Foo {
function __construct(){
echo 'hi!';
}
static function bar(){
return 'there';
}
}

echo Foo::bar(); //output: "there"

关于PHP 构造函数和静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com