Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建对象的函数?_Php - Fatal编程技术网

Php 创建对象的函数?

Php 创建对象的函数?,php,Php,是否有一个函数可以用来实例化带有参数的对象 #include <database.h> class database { function __construct($dbhost, $user, $pass, $etc) { /* etc */ } function query($sql) { /* dowork*/ } } $args = array('localhost', 'user', 'pass', 'etc'); $db = create_object(

是否有一个函数可以用来实例化带有参数的对象

#include <database.h>
class database
{
    function __construct($dbhost, $user, $pass, $etc) { /* etc */ }
    function query($sql) { /* dowork*/ }
}
$args = array('localhost', 'user', 'pass', 'etc');

$db = create_object('database', $args); // is there a function like this?
$db->query('SELECT * FROM poop');
您可以为此使用:

class database
{
    function __construct($dbhost, $user, $pass, $etc) { /* etc */ }
    function query($sql) { /* dowork*/ }
}
$args = array('localhost', 'user', 'pass', 'etc');

$ref = new ReflectionClass('database');
$db = $ref->newInstanceArgs($args); 
您可以为此使用:

class database
{
    function __construct($dbhost, $user, $pass, $etc) { /* etc */ }
    function query($sql) { /* dowork*/ }
}
$args = array('localhost', 'user', 'pass', 'etc');

$ref = new ReflectionClass('database');
$db = $ref->newInstanceArgs($args); 

+1:欢迎来到stackoverflow:包括吗?这是PHP还是C?在PHP中,与C或C++中的包不一样。你的意思可能是包括“database.h”;或者,更好的是,需要一次“database.h”;你忘了一个“after”等@安德鲁·摩尔:即使在我更正了答案后,你也只是专注于我答案中的h部分,没有看我答案的其余部分并继续推理,你似乎不是一个逻辑或古德的人,对此感到抱歉:+1:欢迎来到stackoverflow:包括?这是PHP还是C?在PHP中,与C或C++中的包不一样。你的意思可能是包括“database.h”;或者,更好的是,需要一次“database.h”;你忘了一个“after”等@Andrew Moore:即使在我更正了答案后,你也只是专注于我答案中的h部分,没有看我答案的其余部分并继续推理,你似乎不是一个逻辑型或gud型的人,对此表示抱歉:是的,使用反射类很好,但如果参数由referecne传递,它就会失败。@Sarfraz:它不会失败。在上面的例子中,他无论如何都在传递值。。。但是,如果您想使用上面的示例通过引用传递,您只需要确保将变量的引用插入到$args中,而不是变量本身$args=数组$byValue和$byReference;如果必须自动执行此操作,则可以使用ReflectionParameter检查构造函数的参数:isPassedByReference@VolkerK:这正是我所期待的,因为答案是isPassedByReferece:如何失败可以在这里找到:。在这里,我提供了一个关于如何避免这个问题的可能的解决方案,Sarfraznawaz2005的回答是的,使用反射类很好,但是如果参数由referecne传递,它就会失败。@Sarfraz:它不会失败。在上面的例子中,他无论如何都在传递值。。。但是,如果您想使用上面的示例通过引用传递,您只需要确保将变量的引用插入到$args中,而不是变量本身$args=数组$byValue和$byReference;如果必须自动执行此操作,则可以使用ReflectionParameter检查构造函数的参数:isPassedByReference@VolkerK:这正是我所期待的,因为答案是isPassedByReferece:如何失败可以在这里找到:。在那里,我提供了一个关于如何避免这个问题的可能解决方案,sarfraznawaz2005给出了一个掠夺的答案