#zephir-php函數和異常處理#php
##前言## 先在這裏感謝各位zephir開源技術提供者git
通過了一個多月的學習,zephir的文檔譯文和基礎講解也將近尾聲了,後面的內容最爲重要也但願和你們一同更好的學習交流,本節的內容只要是講解zephir是怎麼時候PHP自帶的函數庫已經特德異常機制處理的,那麼讓咱們開始本節的旅程把.github
注:筆者水平有限,說的不正確的地方但願你們多多指正,一同交流技術mvc
附上:函數
喵了個咪的博客:w-blog.cn學習
zephir官網地址:http://zephir-lang.com/spa
github地址:https://github.com/phalcon/zephircode
##php函數##blog
PHP有一個豐富的函數庫,您可使用在你的擴展。 調用PHP函數只需正常使用它在你Zephir代碼:開發
namespace MyLibrary; class Encoder { public function encode(var text) { if strlen(text) != 0 { return base64_encode(text); } return false; } }
你能夠調用用戶創建的php函數:
namespace MyLibrary; class Encoder { public function encode(var text) { if strlen(text) != 0 { if function_exists("my_custom_encoder") { return my_custom_encoder(text); } else { return base64_encode(text); } } return false; } }
注意全部PHP函數只接收和返回動態變量。 若是你經過靜態類型變量做爲參數,一個臨時的動態變量將自動被用做橋爲了調用函數:
namespace MyLibrary; class Encoder { public function encode(string text) { if strlen(text) != 0 { return base64_encode(text); } return false; } }
相似地,函數返回動態值不能直接分配給靜態變量:
namespace MyLibrary; class Encoder { public function encode(string text) { string encoded = ""; if strlen(text) != 0 { let encoded = (string) base64_encode(text); return '(' . encoded . ')'; } return false; } }
Zephir動態提供了一種方法來調用函數,如:
namespace MyLibrary; class Encoder { public function encode(var callback, string text) { return {callback}(text); } }
##異常處理##
Zephir實現異常在很低的水平,爲PHP提供相似的行爲和功能。
拋出異常時,可使用「捕捉」塊捕獲異常並容許 開發人員提供適當的處理。
try { //異常均可以在這裏拋出 throw new \Exception("This is an exception"); } catch \Exception, e { //處理異常 echo e->getMessage(); }
Zephir提供了一直沒有反應的「try」,簡單地忽略任何異常在那塊:
try { throw new \Exception("This is an exception"); }
一個「catch 」塊能夠用來捕獲不一樣類型的異常:
try { //異常均可以在這裏拋出 throw new \Exception("This is an exception"); } catch RuntimeException|Exception, e { //處理異常 echo e->getMessage(); }
Zephir容許你把文字或靜態類型化變量看成異常的消息:
throw "Test"; // throw new \Exception("Test"); throw 't'; // throw new \Exception((string) 't'); throw 123; // throw new \Exception((string) 123); throw 123.123; // throw new \Exception((string) 123.123);
Zephir做爲PHP的異常提供相同的設施,讓你知道發生了異常。 例外::getFile()和異常:getLine()返回位置Zephir代碼已經被拋出的異常:
Exception: The static method 'someMethod' doesn't exist on model 'Robots' File=phalcon/mvc/model.zep Line=4042 #0 /home/scott/test.php(64): Phalcon\Mvc\Model::__callStatic('someMethod', Array) #1 /home/scott/test.php(64): Robots::someMethod() #2 {main}
##總結##
本節主要講解了,zephir能夠直接使用PHP的函數庫而且能夠直接調用PHP用戶定義的函數,其實這個是對PHP開發這最方便的一件事情,還有對異常處理進行了一些粗略的講解,那麼今天的zephir譯文和講解就到這裏了,多謝你們的支持!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
zephir技術交流:246348908 歡迎你們的加入!
感謝zephir開發人員: