ホームページ  >  記事  >  バックエンド開発  >  phpでエイリアスとインポートを使用する

phpでエイリアスとインポートを使用する

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

エイリアスを介して外部完全修飾名を参照またはインポートできるようにすることは、名前空間の重要な機能です。これは、Unix のようなファイル システムで他のファイルまたはディレクトリへのシンボリック リンクを作成する方法に似ています。

PHP 名前空間は、エイリアスまたはインポートの 2 つの使用方法をサポートしています。クラス名にエイリアスを使用する方法と、名前空間名にエイリアスを使用する方法です。 PHP はインポートされた関数または定数をサポートしていないことに注意してください。

PHP では、エイリアスは演算子を使用して実装されます。以下は、インポートの 3 つの可能な方法すべてを使用した例です:

例 #1 use 演算子を使用してエイリアスをインポート/使用します

<?php
    namespace foo;
    use My\Full\Classname as Another;
    // 下面的例子与 use My\Full\NSname as NSname 相同
    use My\Full\NSname;
    // 导入一个全局类
    use \ArrayObject;
    $obj = new namespace\Another; // 实例化 foo\Another 对象
    $obj = new Another; // 实例化 My\Full\Classname 对象
    NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func
    $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象
    // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象
?>

名前空間内の名前 (FooBar や For グローバル名などの名前空間区切り文字を含む完全修飾名を含む) には注意してください。名前空間区切り文字 (FooBar など) が含まれていない場合、インポートされる名前は完全修飾されている必要があり、現在のスペースの相対分析に基づいていないため、先頭のバックスラッシュは不要であり、許可されません。

操作を簡素化するために、PHP は 1 行での複数の use ステートメントもサポートしています

例 #2 use 演算子を使用してエイリアスをインポート/使用する場合、複数の use ステートメントが 1 行に含まれます

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化 My\Full\Classname 对象
    NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func
?>

インポート操作はコンパイル中に実行されますただし、動的クラス名、関数名、または定数名はそうではありません。

例 #3 インポート名と動的名

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化一个 My\Full\Classname 对象
    $a = &#39;Another&#39;;
    $obj = new $a; // 实际化一个 Another 对象
?>

また、インポート操作は非修飾名と修飾名にのみ影響します。完全修飾名は決定的であるため、インポートの影響を受けません。

例 #4 インポートと完全修飾名

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化My\Full\Classname类的对象 
    $obj = new \Another; // 实例化Another类的对象 
    $obj = new Another\thing; // 实例化My\Full\Classname\thing类的对象 
    $obj = new \Another\thing; // 实例化Another\thing类的对象 
?>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。