[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Переменная в качестве имени класса
Гость_Андрей
Здравствуйте!

Столкнулся со следующей проблемой: необходимо, чтобы создавались классы с именем, указанным в переменной. Как бы это можно было сделать?

Пример:

<?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
У меня там как раз именно так как должно быть.
$className = 'bar';
new $className() - равносильно new bar()
new $$className() - равносильно new $bar() и равносильно new (), что является двойной ошибкой.

Спустя 1 час, 56 секунд (20.06.2011 - 11:08) tatti написал(а):
linker
да.. эт я вчера загнула конечно ) зато красиво tongue.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.