PHPを学習している際、名前空間のインポートの部分で、分からない部分があった為、お聞きしたいです。
インポートの有効範囲はファイル単位という部分で、以下の2つの「use_include.php」はエラーとなるとのことなのですが、ファイル名が同じなため少し混乱してしまっている部分があります...
php
1<?php 2 3print MyClass::showClass();
php
1<?php 2 3require_once './wings/selfphp/chap10/MyClass.php'; 4 5use wings\selfphp\chap10\MyClass; 6 7require_once 'use_include.php';
以下は、MyClass.phpです
php
1<?php 2namespace wings\selfphp\chap10; 3 4class MyClass{ 5 public static function showClass(){ 6 print __CLASS__; 7 } 8}
実は、分からない部分としまして、ファイル階層についても混乱している部分があるのですが、2つ目の、use_include.phpの「require_once 'use_include.php';」は、その前の行でインポートしている為、MyClassのuse_include.phpなのか、現在のカレントディレクトリに配置されているものなのか、どちらなのでしょうか...?
また、2つ目のファイルは、1行目でインクルード先を指定する際、カレントディレクトリを示す「./」としていることから、wingsフォルダの一つ上の階層に存在している、といった理解で合っていますでしょうか...?
インポートの有効範囲についてなのですが、use_include.phpでインポートした型は、インクルード先のuse_include.phpでは認識されない為、1つ目のファイルでは、エラーとなってしまうとの説明があったのですが、インクルード先のuse_include.phpで認識されないという部分が分かりません...
混乱してしまっている部分がある為、どなたかご助言頂けましたら幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー