【PHP】將“變數”轉換為”可以引入的檔案“以及 錯誤的使用

來源:互聯網
上載者:User
【PHP】將“變數”轉換為”可以引入的檔案“以及 異常的使用

槽吐吐,最近在看一本叫《代碼簡潔之道》的書,書中講了如何讓自己的代碼變得容易讀懂,受益匪淺。有興趣的朋友可以看看。

PHPer很少使用異常,即時是公司裡的大牛,也不見得會使用異常。更多情況下,異常僅僅被當作error code的另外一個實現體而已。我記得我在前面的部落格裡還說到過異常,貌似木有人支援啊。

想象一下:一個代碼裡出現了如下情況:


上面的代碼,熟悉嗎?之前看discuz的源碼時,有一段代碼有類似的結構,這樣寫,代價確實很大,尤其是後面的人來讀這段代碼的時候。我們確實沒有重構的習慣,使用異常重構,可以很好解決這個問題


是不是好點?還可以再最佳化嗎?

getMessage();}function fun1(){throw new Exception("Your input is empty", 10001);}

好處是什嗎?

1. 你可以專註與正常的流程,而不用關心出錯了會怎麼辦

2. 將錯誤的部分統一處理,返回錯誤、日誌、回溯

3. 隨意增加錯誤類型,因為本身是自訂,你不用維護一套error code

4. 代碼結構清晰,維護代價低

5. 特有的類維護自己的異常,如:smarty、phpunit,出錯了有自己的記錄方式,與所處的系統無耦合

看個人習慣,我個人極力推薦


有這麼一個需求:

我想將一個變數(可能為數組、字串、數字),可以輸出到檔案裡,使這個檔案被別的php檔案include後,使用這個變數,即:

 'abc',1 => array('abc' => '2345'));//輸出到檔案的內容是:{return array(0 => 'abc',1 => array('abc' => '2345'));}

然後,下一個檔案include後是:

$a = include("file.php");

它就擁有了這個資料了。

具體什麼場合下用到,我們將記憶體中的資料放到硬碟中,除了serialize外,這也是一種方便的做法,因為不需要unserialize。不好的一點是:沒法對對象、控制代碼做操作。

我是這麼寫的:

 $v){                 if(is_string($k)){                    $k = "\"{$k}\"";                }                       $str .= $pfx . "{$k} => " . $this->var2Str($v, $pfx) . ",\n";            }                   $str .= $pfx . ")";        }elseif(is_int($var) || is_float($var)){            $str = "{$var}";        }elseif(is_string($var)){            $str = "\"{$var}\"";        }               return $str;    }}

可以試試~

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.