zephir-(12)php函式和異常處理
#zephir-php函式和異常處理#
##前言## 先在這裡感謝各位zephir開源技術提供者
經過了一個多月的學習,zephir的文件譯文和基礎講解也將近尾聲了,後面的內容最為重要也希望和大家一同更好的學習交流,本節的內容只要是講解zephir是怎麼時候PHP自帶的函式庫已經特德異常機制處理的,那麼讓我們開始本節的旅程把.
注:筆者水平有限,說的不正確的地方希望大家多多指正,一同交流技術
附上:
喵了個咪的部落格:w-blog.cn
zephir官網地址:http://zephir-lang.com/
github地址:https://github.com/phalcon/zephir
##php函式##
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): PhalconMvcModel::__callStatic('someMethod', Array)
#1 /home/scott/test.php(64): Robots::someMethod()
#2 {main}
##總結##
本節主要講解了,zephir可以直接使用PHP的函式庫並且可以直接呼叫PHP使用者定義的函式,其實這個是對PHP開發這最方便的一件事情,還有對異常處理進行了一些粗略的講解,那麼今天的zephir譯文和講解就到這裡了,多謝大家的支援!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!
zephir技術交流:246348908 歡迎大家的加入!
感謝zephir開發人員: