下面我們來聊聊,如何以其他的方式,來組合出難以維護的商業邏輯。
啊,我們的老朋友全域變數,可以說是寫難以維護程式碼的重要武器!
雖然現在的 Laravel 框架不容易使用全域變數,但是我們可以參考 Laravel helper 的做法,撰寫全域函式:
/* 參考 laravel e() */
if (! function_exists('f')) {
function f($value)
{
// 有的沒的
}
}
維護這段的工程一定會大受感動,甚至可能痛哭流涕。
靜態變數,是僅次於全域變數的重要武器。
因為許多人都知道全域變數是不好的東西,所以在看到全域變數時,就會提高警覺。
相對的,靜態變數確實有適合的使用場合,也並不是所有 Laravel 開發者都會用 $this->app->singleton()
的方式處理,所以靜態變數的應用場景可以說是更多的。
儘量的將你的功能以靜態變數的方式實作,如果有人提出問題,可以回答他靜態變數的效能比較好。
Laravel 的 command 可以用來撰寫一些適合 console 命令的邏輯。
比方,像是官方範例的
<?php
namespace App\Console\Commands;
class SendEmails extends Command
{
protected $signature = 'email:send {user}';
protected $description = 'Send drip e-mails to a user';
public function handle(DripEmailer $drip)
{
$drip->send(User::find($this->argument('user')));
}
}
就很適合:你可以程式裡呼叫該指令寄信,也可以排程裡呼叫該指令寄信。
不過,如果我們把商業邏輯拆散,放到不同的指令來實作。光想到要維護一段商業邏輯,之後的工程師得要盤點十幾個指令,才大概知道可能要改哪裡,光是想像就很有趣呢!
如何寫出難以維護的商業邏輯,實在是門太深的學問。不過我們還是得在今天做個小總結,以免遺漏我們後面必須討論的議題。
希望各位有收穫,我們明天見!