Как создать экземпляр класса?

SashOk

Guest
Как создать экземпляр класса?

У меня есть две переменные $className и $constructorArgs: имя класса и аргументы его конструктора (массив).

Как создать объект?

-~{}~ 24.08.05 14:04:

так сделал:
PHP:
		if($constructorArgs){
			$argNames = Array();
			foreach($constructorArgs as $key => $val){
				$argName    = "arg_$key";
				$$argName   = $val;
				$argNames[] = '$'.$argName;
			}
			$obj = eval("return new $className(".join(', ',$argNames).");");
		}else
			$obj = eval("return new $className();");
 

vitus

мимо проходил
первая ветка у тебя unsafe , если есть возможность - поменяй интерфейс, чтобы конструктор принимал массив

во второй ветке можно без eval(), просто: $obj=new $className();
 

SashOk

Guest
> первая ветка у тебя unsafe
этот код будет находится в ф-ции, после етого кода сразу конец ф-ции

> если есть возможность - поменяй интерфейс, чтобы конструктор принимал массив
нету возможности

> во второй ветке можно без eval(), просто: $obj=new $className();

tnx
 

vitus

мимо проходил
интересно, для чего может понадобиться фабрика, создающая неизвестно что?
 

SashOk

Guest
> интересно, для чего может понадобиться фабрика, создающая неизвестно что?

Для такой шняги:
У меня есть куча классов. каждый в отдельном файле.
К любому скрипту в проекте ета куча классов инклюдится.
Шоб меньше тормозило, я создаю перегруженный класс-обертку ObjectLoader. Он запоминает имя класса и аргументы конструктору. Когда вызывается любой метод/св-во, то только тогда ObjectLoader инклюдит класс и создает его екземпляр.
PHP:
$obj1 = ObjectLoader('Class1', $arg1,$arg2);
$obj2 = ObjectLoader('Class2');
...
$objN = ObjectLoader('ClassN');
 

vitus

мимо проходил
месье знает толк в извращениях!

а как вызываются методы и свойства ??

а зачем регистрировать объекты, если они пока не нужны?

и што? - меньше тормозит?
 

WMix

герр M:)ller
Партнер клуба
посмотри про MVC тут на форуме прям поищи..

контролер отвечает за те задачи котокые делает ObjectLoader в твоем случаи!
 
Сверху