以下のようなコードがあるとします。
<?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ランキング
-
「クラス関数」「メンバ関数」...
-
ラッパークラスって何ですか?
-
ユーザ定義関数にデフォルト引...
-
Objectの型チェック
-
透過PNGが透過されない!!
-
CFileDialogの最初のディレクト...
-
【file_exists】ファイルが存在...
-
フォントの色を変えるには?
-
VB6にてメールを送信する方法
-
C# Excelファイルへの画像挿入。
-
フォームで戻った際に入力済み...
-
.htaccessにphp_valueが使用できな
-
別ファイルの変数を呼び出した...
-
3つ以上の論理積は利用可能なの...
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
$_SESSION 有効期限をブラウザ...
-
リクエストメソッド
-
pg_exec()、pg_result()は、使...
-
VBSの「MsgBox」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpのクラスにて別ファイルの変...
-
ラッパークラスって何ですか?
-
class定義のphpをファイル分割...
-
phpのクラスメソッドの定義が長...
-
'_'(アンダースコア)の使い方...
-
クラス
-
配列とオブジェクトの違い
-
PHPのクラス名の付け方
-
codeigniter cartのoptions
-
メンバインスタンスへのアクセ...
-
PHPでオブジェクト指向開発して...
-
ユーザー定義関数とクラスの違...
-
ソースファイルの分け方について
-
データベースで値をインクリメ...
-
require_onceについて
-
PHPでサブクラスからスーパクラ...
-
phpで使用不可のクラス名
-
php、可変プロパティ名について
-
比較演算子===と!==について
おすすめ情報