ホームページ  >  記事  >  バックエンド開発  >  PHPフォールバックグローバル関数/定数

PHPフォールバックグローバル関数/定数

伊谢尔伦
伊谢尔伦オリジナル
2016-11-23 10:49:29875ブラウズ

名前空間で、PHP は修飾されていないクラス、関数、または定数の名前を検出すると、別の優先順位戦略を使用して名前を解決します。クラス名は常に現在の名前空間内の名前に解決されます。したがって、システム内部のクラス名、または名前空間に含まれていないクラス名にアクセスする場合は、次のような完全修飾名を使用する必要があります。

例 #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 はグローバル スペースで関数または定数を使用するようにフォールバックします。

例 #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 までご連絡ください。