以下のようなコードがあるとします。
<?php
namespace {
print_r(get_declared_classes());
}
namespace A\B\C{
print_r(get_declared_classes());
}
?>
この場合は問題なく実行されるのですが
以下のようなコードになった場合名前空間A\\B\\Cのコード内にある
ArrayObjectがみつからないというfatalerrorがでます。
<?php
namespace {
print_r(get_declared_classes());
$noneObj = new ArrayObject(array("key01" => "グローバル空間"));
print $noneObj["key01"];
}
namespace A\B\C{
print_r(get_declared_classes());
$abcObj = new ArrayObject(array("key01" => "名前空間 ABC"));
print $abcObj["key01"];
}
?>
これはどういうことなのでしょうか?
組み込みの関数は特定の名前空間内でも被修飾名にて呼び出せるにもかかわらず
組み込みのクラスはなぜか絶対修飾名でないとクラスを呼ぶことができません。
この理由をご教授ください。
よろしく御願いします。
No.1ベストアンサー
- 回答日時:
>これはどういうことなのでしょうか?
それが名前解決のルールだから、ということではないでしょうか。
関数の場合、名前空間内にその関数が存在しなければ次にグローバル空間を探す。
一方クラスの場合は、名前空間内で見つからなければautoloadを試みる。(グローバル空間を探すことはしない)ということになっています。
http://www.php.net/manual/ja/language.namespaces …
まあ妥当なルールではないかと。__autoload(又はspl_autoload_register)で定義しておけばクラスを使用するのに逐一includeしないで済みますし。あるいはグローバル以外で内部関数を使用するのに\していくのも不自由ですしね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) 【Python初学者】以下コードについて教えていただきたいです 4 2023/04/19 13:01
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
クラス設計の良い参考書を教え...
-
配列とオブジェクトの違い
-
クラス内でメソッド呼ぶ際、thi...
-
phpのクラスにて別ファイルの変...
-
ユーザ定義関数にデフォルト引...
-
phpで使用不可のクラス名
-
スクリプト言語特有のテクニック
-
正規表現について
-
phpのクラスについて
-
'_'(アンダースコア)の使い方...
-
PHPのif文でその処理を途中で抜...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
【file_exists】ファイルが存在...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
$_SESSION 有効期限をブラウザ...
-
.phpと.incファイルの違いはな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
class定義のphpをファイル分割...
-
PHPの名前空間について質問です。
-
配列とオブジェクトの違い
-
phpのクラスにて別ファイルの変...
-
PHP4、PHP5 1ファイル複数クラ...
-
文字連結中の三項演算子について
-
PHP5 コンストラクタや初期化の...
-
プログラムにも慣例みたいなも...
-
(クラス関連)staticキーワー...
-
phpで使用不可のクラス名
-
phpにおける初期化の意味
-
PHPでサブクラスからスーパクラ...
-
クラス
-
[CakePHP2.2] :: の意味と役割
-
phpで時間を増やしていくにはど...
-
PHPでオブジェクト指向開発して...
-
$this->pets[$i]->report();の...
-
ソースファイルの分け方について
おすすめ情報