在一个类的函数中编写输出是不应该做的吗?

7
最近我正在尝试适应PSR标准。在PSR-1文档中指出:

文件应该声明符号(类、函数、常量等),或者引起副作用(例如生成输出、更改.ini设置等),但不应同时进行。

这是否意味着在类中的函数中编写输出(比如说 echo '<b>一些粗体文本</b>';)是我不应该做的事情?

2个回答

6

那并不是它的意思。

它只是指当你include这些文件时会发生什么。 include 'foo.php' 的结果应该是已经创建了一堆新的符号(类,函数,常量),或者产生了一些副作用(自动加载程序已添加,生成了 HTML 输出,或者通常发生了某些事情)。这两件事不应混在一起,因为您经常希望加载类而不会引起一些必然的副作用。

如果您1)include 文件,然后2)显式调用产生副作用的函数,则完全可以。否则,所有产生副作用的代码都不能写在类或函数中,这根本就是无稽之谈。


0

总之,举个例子来说。

不好的例子(混合)

<?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"; ?>

嗯,是的,这部分对我很清楚,但如果在类中有一个写输出的方法,那么“好例子#1”仍然会是好的吗? - Qualphey
@VitaliusKuchalskis 我很惊讶它仍然被提及为建议而不是硬性规定;-) - Ja͢ck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接