Столкнулся со следующей проблемой: необходимо, чтобы создавались классы с именем, указанным в переменной. Как бы это можно было сделать?
Пример:
<?php
function load($name){
class $name(){
include("{$name}.php");
}
}
?>
Спустя 4 минуты, 25 секунд (19.06.2011 - 19:35) tatti написал(а):
$name = "a";не знаю как на именах классов, но вот так можно
$$name = "a";
echo $a;
Спустя 2 минуты, 9 секунд (19.06.2011 - 19:37) Гость_Андрей написал(а):
Нет. Вы, наверное, не поняли. Строка
class $name(){останавливает выполнение т.к. так делать нельзя. Есть какие-либо пути решения?
Спустя 7 минут, 46 секунд (19.06.2011 - 19:45) tatti написал(а):
приведённый мной код выведет
может таким путём можно и имена классам из значения переменных задавать? попробуй
а
может таким путём можно и имена классам из значения переменных задавать? попробуй
Спустя 7 минут, 29 секунд (19.06.2011 - 19:52) Guest написал(а):
Таким способом нельзя, к сожалению.
Спустя 6 минут, 42 секунды (19.06.2011 - 19:59) bulgakov написал(а):
Ммм.. не знаю поможет вам данная рекомендация или нет, но вообще рекомендуют каждый класс делать в отдельном файле, тогда вам просто генерить файлы с нужными вам именами, а в них уже напишите нужные классы.
Спустя 2 минуты, 40 секунд (19.06.2011 - 20:01) tatti написал(а):
к счастью! ибо можно
class bar {
function go() {
echo "go";
}
}
$className = "class_". $className;
eval("class $$className extends bar {}");
$n = new $$className;
$n->go();
Спустя 14 минут, 52 секунды (19.06.2011 - 20:16) bulgakov написал(а):
Я бы все таки сделал каждый класс в отдельном файле... но можно и так.
Спустя 1 час, 30 минут, 58 секунд (19.06.2011 - 21:47) linker написал(а):
Когда возникает желание городить вот такие извраты, то стоит задуматься над тем, чтобы остановиться и подумать: "Где-то здесь закралась ошибка, надо начинать всё заново переписывать".
Спустя 39 минут, 7 секунд (19.06.2011 - 22:26) tatti написал(а):
суть зачем этим заниматся не ясна, зато возможно )
Спустя 9 часов, 58 минут, 2 секунды (20.06.2011 - 08:24) linker написал(а):
tatti
Только
Говнокод это всё.
Только
eval("class $className extends bar {}");
$n = new $className();
Говнокод это всё.
Спустя 53 минуты, 51 секунда (20.06.2011 - 09:18) tatti написал(а):
linker
конечно говнокод. этож не то что я обьясняла. внимательней надо. у тебя там знак доллара пропущен.
конечно говнокод. этож не то что я обьясняла. внимательней надо. у тебя там знак доллара пропущен.
Спустя 49 минут, 13 секунд (20.06.2011 - 10:08) linker написал(а):
tatti
У меня там как раз именно так как должно быть.
new $$className() - равносильно new $bar() и равносильно new (), что является двойной ошибкой.
У меня там как раз именно так как должно быть.
$className = 'bar';new $className() - равносильно new bar()
new $$className() - равносильно new $bar() и равносильно new (), что является двойной ошибкой.
Спустя 1 час, 56 секунд (20.06.2011 - 11:08) tatti написал(а):
linker
да.. эт я вчера загнула конечно ) зато красиво
да.. эт я вчера загнула конечно ) зато красиво