首頁  >  文章  >  後端開發  >  php後備全域函數/常數

php後備全域函數/常數

伊谢尔伦
伊谢尔伦原創
2016-11-23 10:49:29880瀏覽

在一個命名空間中,當 PHP 遇到一個非限定的類別、函數或常數名稱時,它會使用不同的優先策略來解析該名稱。類別名稱總是解析到目前命名空間中的名稱。因此在存取系統內部或不包含在命名空間中的類別名稱時,必須使用完全限定名稱,例如:

Example #1 在命名空間中存取全域類別

<?php
    namespace A\B\C;
    class Exception extends \Exception {}
    $a = new Exception(&#39;hi&#39;); // $a 是类 A\B\C\Exception 的一个对象
    $b = new \Exception(&#39;hi&#39;); // $b 是类 Exception 的一个对象
    $c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类
?>

對於函數和常數來說,如果目前命名空間中不存在該函數或常數,PHP 會退而使用全域空間中的函數或常數。

Example #2 命名空間中後備的全域函數/常數

<?php
    namespace A\B\C;
    const E_ERROR = 45;
    function strlen($str)
    {
        return \strlen($str) - 1;
    }
    echo E_ERROR, "\n"; // 输出 "45"
    echo INI_ALL, "\n"; // 输出 "7" - 使用全局常量 INI_ALL
    echo strlen(&#39;hi&#39;), "\n"; // 输出 "1"
    if (is_array(&#39;hi&#39;)) { // 输出 "is not array"
        echo "is array\n";
    } else {
        echo "is not array\n";
    }
?>


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn