• 调用函数

    调用函数

    PHP有一个丰富的函数库,您可以在扩展中使用它们。 要调用PHP函数,只需在Zephir代码中正常使用它:

    1. namespace MyLibrary;
    2. class Encoder
    3. {
    4. public function encode(var text)
    5. {
    6. if strlen(text) != 0 {
    7. return base64_encode(text);
    8. }
    9. return false;
    10. }
    11. }

    您还可以调用预期存在于PHP用户区中的函数,但不一定是内置于PHP本身:

    1. namespace MyLibrary;
    2. class Encoder
    3. {
    4. public function encode(var text)
    5. {
    6. if strlen(text) != 0 {
    7. if function_exists("my_custom_encoder") {
    8. return my_custom_encoder(text);
    9. } else {
    10. return base64_encode(text);
    11. }
    12. }
    13. return false;
    14. }
    15. }

    请注意,所有PHP函数仅接收和返回动态变量。 如果将静态类型变量作为参数传递,则临时动态变量将自动用作桥接器以调用该函数:

    1. namespace MyLibrary;
    2. class Encoder
    3. {
    4. public function encode(string text)
    5. {
    6. if strlen(text) != 0 {
    7. // an implicit dynamic variable is created to
    8. // pass the static typed 'text' as parameter
    9. return base64_encode(text);
    10. }
    11. return false;
    12. }
    13. }

    类似地,函数返回动态值,如果没有适当的显式强制转换,则无法直接将其分配给静态变量:

    1. namespace MyLibrary;
    2. class Encoder
    3. {
    4. public function encode(string text)
    5. {
    6. string encoded = "";
    7. if strlen(text) != 0 {
    8. let encoded = (string) base64_encode(text);
    9. return "(" . encoded . ")";
    10. }
    11. return false;
    12. }
    13. }

    Zephir还为您提供了一种动态调用函数的方法,例如:

    1. namespace MyLibrary;
    2. class Encoder
    3. {
    4. public function encode(var callback, string text)
    5. {
    6. return {callback}(text);
    7. }
    8. }