PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

グローバル空間> <名前空間の定義
Last updated: Fri, 03 Oct 2008

view this page in

名前空間の使用法

名前空間内のすべてのクラスや関数は、どこからでも MyProject::DB::ConnectionMyProject::DB::connect のようにフルネームで参照することができます。

例1 名前空間内の名前の使用法

<?php
    
require 'MyProject/Db/Connection.php';
    
$x = new MyProject::DB::Connection;
    
MyProject::DB::connect();
?>

名前空間を現在のコンテキスト (グローバル空間あるいは別の名前空間) にインポートするには use 演算子を使用します。 この演算子の構文は、次のようになります。

<?php
/* ... */
use Some::Name as Othername;

// シンプルな使用法
use Foo::Bar;
// これは、さきほどと同じ意味になります
use Foo::Bar as Bar;
?>
インポートされた名前の働きは、次のようになります。 コンパイラがローカル名 Othername (それ単体か、あるいは :: で区切られた長い名前へのプレフィックス) に遭遇すると、インポートされた名前 Some::Name でそれを置き換えます。

use はグローバルスコープでのみ使用可能です。 関数やクラスの内部では使用できません。 インポートされた名前が有効なのは、 インポートした箇所からそのファイルの最後までの間です。 混乱を避けるため、インポートはファイルの先頭で行うようにしましょう。

例2 名前空間のインポート、名前空間へのアクセス

<?php
    
require 'MyProject/Db/Connection.php';
    use 
MyProject::DB;
    use 
MyProject::DB::Connection as DbConnection;
    
    
$x = new MyProject::DB::Connection();
    
$y = new DB::connection();
    
$z = new DbConnection();
    
DB::connect();
?>

注意: インポート処理はコンパイル時にのみ行われ、 すべてのローカル名はコンパイラによって完全な名前に変換されます。 この変換は文字列で行うわけではないので、 コールバック関数の指定がインポートの影響を受けることはありません。



add a note add a note User Contributed Notes
名前空間の使用法
richard at richard-sumilang dot com
27-Mar-2008 10:36
Syntax for extending classes in namespaces is still the same.

Lets call this Object.php:

<?php

namespace com
::rsumilang::common;

class
Object{
  
// ... code ...
}

?>

And now lets create a class called String that extends object in String.php:

<?php

class String extends com::rsumilang::common::Object{
  
// ... code ...
}

?>

Now if you class String was defined in the same namespace as Object then you don't have to specify a full namespace path:

<?php

namespace com
::rsumilang::common;

class
String extends Object
{
  
// ... code ...
}

?>

Lastly, you can also alias a namespace name to use a shorter name for the class you are extending incase your class is in seperate namespace:

<?php

namespace com
::rsumilang::util;
use
com::rsumlang::common as Common;

class
String extends Common::Object
{
  
// ... code ...
}

?>

- Richard Sumilang

グローバル空間> <名前空間の定義
Last updated: Fri, 03 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites