Комментарии 12
Уберите goto, а то щас запинают. Пишите просто &$sub;
Данное применение goto оправдано, тут происходит jump, а не вызов процедуры.
Напишу для тех, кто будет это читать, хотя пост и старый.
Такое использование goto имеет один нюанс — текущий фрейм выполнения (это у нес сама функция AUTOLOAD) не попадает в стек вызовов, т.е. изнутри сконструированной функции в стеке вызова AUTOLOAD виден не будет. А при вызове &$sub — будет.
Таким образом с точки зрения созданной функции первый запуск ничем не отличается от последующих.
Такое использование goto имеет один нюанс — текущий фрейм выполнения (это у нес сама функция AUTOLOAD) не попадает в стек вызовов, т.е. изнутри сконструированной функции в стеке вызова AUTOLOAD виден не будет. А при вызове &$sub — будет.
Таким образом с точки зрения созданной функции первый запуск ничем не отличается от последующих.
Мне доводилось сопровождать код, объёмом 100000 строк, написанный с использованием такого приёма. Это была самая страшная пытка. Генерить методы налету — величайшее зло, ибо их потом даже нельзя нагрепать в сорцах; а если у вас 15-и кратное наследование, то найти, где же, что появилось… ну просто невозможно! Никогда так не делайте!
Да, сопровождать большие проекты на перле, та ещё задача.
Никогда — это слишком долго.
Есть несколько слчаев, когда это полезно.
В основном различные ORM, врапперы.
Есть несколько слчаев, когда это полезно.
В основном различные ORM, врапперы.
Ладно, поправка :-)
Этот метод можно использовать в коде, только при условии, что документация будет так хороша, и сам код будет на столько универсален и безупречен, что читать и править его никогда и никому не придётся. Какие бы новые треблвания ни предъявила бы к софту жизнь.
Т.е. — это или чудо-код, или просто мёртворождённый проект.
Этот метод можно использовать в коде, только при условии, что документация будет так хороша, и сам код будет на столько универсален и безупречен, что читать и править его никогда и никому не придётся. Какие бы новые треблвания ни предъявила бы к софту жизнь.
Т.е. — это или чудо-код, или просто мёртворождённый проект.
Непонятно, зачем $name получали?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Корректное использование AUTOLOAD