Век живи — век учись | PHP5

Господа PHP-шники. Такое вы знали? :)

<?
    class Caller {
        public function __call($func, $args) {
            return call_user_func_array($func, $args);
        }

    }


    $s = new Caller();

    echo <<<TEXT
    {$s->strrev('KOT')}
TEXT;

?>

Комментарии 27

mansch № 2
echo <<<TEXT
{$s->strrev('KOT')}
TEXT;

это как ?
bolk автор № 5
Интерполяция переменных. Просто тут расширено на переменные-функции. Кстати, возможность, кажется, недокументированная.
mansch № 7
понятно
ты сейчас больше на php пишешь или на perl?
bolk автор № 8
Я больше разрабатываю. Но на Perl уже не пишу вообще, хотя раньше это был любимый язык.
mansch № 9
bolk, что значит разрабатываешь?
bolk автор № 10
mansch, Есть кодеры и есть разработчики. Я — разработчик.
mansch № 11
bolk, еще есть системные архитекторы :-)
bolk автор № 12
mansch, Я учился на «системного программиста» :)
mansch № 13
bolk, ну это несколько не то
архитектор все таки планирует архитектуру системы
я по специальности — инженер — системотехник
правда в Строительстве
slach № 16
а по моему, это все сугубо в code_wtf надо…

оно конечно здорово что теперь можно в <<< TEXT вызвать ФУНКЦИЮ, а не трахаться с переменными, но уж больно здоровый call-stack получается…
bolk автор № 19
В каком смысле здоровый call stack? не понимаю.
slach № 22
ну сначала __call
потом call_user_func_array
потом уже сама эта ф-ция…

вот какой call-stack я имел ввиду
т.е. для меня польза неочевидна в такой вот нотации
bolk автор № 23
Сейчас даже килобайты не считаются «здоровыми», не говоря уже о десятках байт. Экономия на спичках.
slach № 24
bolk, повторюсь, на мой взгляд, это попытка найти счастье там, где его нет

поясню
да
echo <<< EOT
{$caller->func(arg)}
EOT;

это гораздо удобнее чем
$var = func(arg);
echo <<< EOT
{$var}
EOT;

но IMHO
$output='begin '.func(arg).' end';

гораздо эффективнее чем
$output="header {$caller->func(arg)} end";

вы часто используете <<< ???

или я чтото неверно истолковал и «интерполяция методов в строках», это чтото другое??
victorgr № 20
Ничего не понял. А чем strrev(«КОТ»); не то? :)
Делают-то одно и то же?
bolk автор № 21
Между вызовом функции и интерполяцией в строке разница есть? :)