Запись выходных данных в функции класса - это то, что я не должен делать?
В последнее время я пытаюсь адаптироваться к стандарту PSR. В документе PSR-1 указано, что:
Файлы ДОЛЖНЫ либо объявлять символы (классы, функции, константы и т. Д.), Либо вызывать побочные эффекты (например, генерировать выходные данные, изменять настройки.ini и т. Д.), Но НЕ ДОЛЖНЫ делать и то, и другое.
Означает ли это, что запись вывода (скажем, echo '<b>some bold text</b>';
) в функции, которая находится в классе, что я не должен делать?
2 ответа
Это не то, что это значит.
Все это относится к тому, что происходит, когда вы include
эти файлы. Результат include 'foo.php'
должен быть либо набор новых символов (классов, функций, констант), либо возникновение побочного эффекта (добавлен автозагрузчик, сгенерирован HTML-вывод или вообще что-то произошло). Эти две вещи не следует смешивать, поскольку вы часто хотите загружать классы, не вызывая при этом некоторого неизбежного побочного эффекта.
Если вы 1) include
файл, а затем 2) явно вызвать функцию, которая производит побочный эффект, это прекрасно. В противном случае весь код, который создает побочные эффекты, не может быть написан в классах или функциях, что просто бессмысленно.
Подводя итог с примерами.
Плохой пример (смешанный)
<?php
namespace Foo;
class Bar
{
// ...
}
?>
<b>some text here</b>
Хороший пример № 1 (объявление класса)
<?php
namespace Foo;
class Bar
{
// ...
}
Хороший пример № 2 (шаблон)
<b>some text here</b>
<?php echo "hello world"; ?>