2010-02-21 2 views
1

Есть ли функция, которую я могу использовать для создания объекта с аргументами?Функция создания объектов?

#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'); 
+0

+1: Добро пожаловать в StackOverflow :) – Sarfraz

+1

'#include '? Это PHP или C здесь? –

+1

«#include» не работает так же, как в PHP, как на C или C++. Вероятно, вы имеете в виду «include» database.h '; " или, еще лучше, «require_once» database.h '; " – amphetamachine

ответ

1

Вы можете использовать ReflectionClass::newInstanceArgs для этого:

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); 
+0

Да, что хорошо использовать класс отражения, но он терпит неудачу, если аргументы переданы referecne. – Sarfraz

+0

Что именно не получится? –

+2

@Sarfraz: Это не подведет. В приведенном выше примере он все равно проходит по значению ... Но если вы хотите перейти по ссылке, используя приведенный выше пример, вам просто нужно убедиться, что ссылка вашей переменной вставляется в '$ args' вместо переменной сам. ('$ args = array ($ byValue, & $ byReference);') –

Смежные вопросы