zephir-(12)php函數和異常處理

#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開發人員:

相關文章
相關標籤/搜索