社群之前有一篇老文章,是關於PHP到底該怎麼定義全域性函式,原文連結如下:
https://learnku.com/laravel/t/4156/php-in-the-end-how-to-define-the-global-function?order_by=created_at&
文中批判了 laravel在定義函式時 加一個 function_exist 判斷的做法。
特寫一篇文章說明一下,在定義一個函式時,為什麼要加一個 exist判斷。
答案:是為了方便替換。
我最近用某國產框架做了個專案,其中用到了其中一個框架自定義的全域性函式,但是這個函式有一個問題,我決定修改一下。但是直接修改框架肯定是不好的,於是變把該函式原封不動的複製一遍出來,做了少量修改,替換掉了框架自定義的function,由於框架自帶的函式做了exist的判斷,所以我修改的函式得以替換掉了框架自帶的函式,如果沒有這一層判斷,那麼替換起來就麻煩了。
以上,如果你開發的是基礎元件和服務,並且準備讓人擴充套件和替換,定義前先判斷下是最好的。
本作品採用《CC 協議》,轉載必須註明作者和本文連結