## 從屬效應(副作用)
一份PHP文件中**應該**要不就只定義新的聲明,如類、函數或常量等不產生從屬效應的操作,要不就只有會產生從屬效應的邏輯操作,但**不該**同時具有兩者。
“從屬效應”(side effects)一詞的意思是,僅僅通過包含文件,不直接聲明類、
函數和常量等,而執行的邏輯操作。
“從屬效應”包含卻不僅限于:生成輸出、直接的 require 或 include、連接外部服務、修改 ini 配置、拋出錯誤或異常、修改全局或靜態變量、讀或寫文件等。
以下是一個反例,一份包含聲明以及產生從屬效應的代碼:
~~~
<?php
// 從屬效應:修改 ini 配置
ini_set('error_reporting', E_ALL);
// 從屬效應:引入文件
include "file.php";
// 從屬效應:生成輸出
echo "<html>\n";
// 聲明函數
function foo()
{
// 函數主體部分
}
~~~
下面是一個范例,一份只包含聲明不產生從屬效應的代碼:
~~~
<?php
// 聲明函數
function foo()
{
// 函數主體部分
}
// 條件聲明**不**屬于從屬效應
if (! function_exists('bar')) {
function bar()
{
// 函數主體部分
}
}
~~~