前のトピック

< 例外

次のトピック

クロージャー >

このページ

関数の呼び出し

PHPには、拡張の中で使うことができる豊富な関数があります。PHP関数を呼ぶには、Zephirコード内でいつものように単純に使います。

namespace MyLibrary;

class Encoder
{

    public function encode(var text)
    {
        if strlen(text) != 0 {
            return base64_encode(text);
        }
        return false;
    }
}

PHPユーザランドにあるが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 {
            // 暗黙的な動的変数が生成されます
            // 静的な型の 'text' をパラメータとして渡す場合
            return base64_encode(text);
        }
        return false;
    }
}

同様に、関数は適切なcast無しに静的変数に直接割り当てることができない動的な変数を返します。

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);
    }
}
TOP
inserted by FC2 system