Вот очень упрощенный пример настройки:
включает/form.php
$secret_var = 'Mind blowing secret';
return '<form></form>';
страница.php
echo include('includes/form.php'); // Notice the unusual way of including
echo $secret_var;
Результат
<form></form>
Mind blowing secret
Как видите, я не возвращаю $secret_var
, но он все еще открыт!
Каков наиболее эффективный способ создать область действия для всех переменных в этом includes/form.php, чтобы они автоматически отключались PHP?
Конечно, я знаю, что могу запустить unset($secret_var);
, но есть много форм с множеством переменных в каждой, и разные разработчики постоянно их меняют. В долгосрочной перспективе этот метод будет означать 100% вероятность ошибок. Мне нужно сделать это как-то автоматически (как переменные внутри функции), но в данном случае без использования именованной функции (файл может быть включен более одного раза). Также крайне важно оставить код внутри page.php без изменений, так как это будет означать множество изменений в системе.
Может быть, я мог бы использовать анонимную функцию или что-то в этом роде? Хорошо бы не навредить спектаклю...
call_user_func()
и вуаля! Оно работает! Спасибо. О вашем PS: Почему он работает, если он неверен? И как тогда сделать эхо правильно? Нравится этоecho (include('includes/form.php'));
? О PPS: Есть ли у него известные недостатки? или просто редкость? 04.08.2013include()
— это функция. То, что находится в файле, выполняется, но само возвращает значениеbool
. Так что не стоит повторять это. Если это сработало здесь, то только из-за странного способа, которым вы используете include. Не рекомендуется ставитьreturn
вinclude
. Это 99% гарантированный способ возникновения проблем, которые очень трудно отследить позже, поскольку код послеinclude()
не будет выполняться.return
s входят в функции. возвраты не включаются. Это хак, а не правильный :) 04.08.2013require
иreturn
прервал поток файла, которыйrequired
он . Но я этого не делаю, потому что функции существуют именно по этой причине. Объявите функцию или несколько во включении и используйте ее. Как будто это предназначено. Есть много хакерских/сомнительных вещей, которые вы можете делать во время программирования, но вы не должны этого делать. --- Мама, МОГУ я курить? МОЖНО , НО НЕ МОЖЕТЕ :) 04.08.2013