PHP での名前空間の使用に関する記事をいくつか読みましたが、まだわかりませんでした。私は3つのファイルを持っています:
script.php と dog.php は、同じルート フォルダー abstr にあります。クラスanimals.phpはclsフォルダにあり、dogはanimalsを拡張しています。
ソース:
cls/Animals.php:
namespace cls;
abstract class Animals { .. }
Dog.php
(ルートフォルダーにあるため、名前空間はありません):
class Dog extends Animals {...}
script.php
:
function __autoload($cls){
$file = str_replace('\\',DIRECTORY_SEPARATOR,$cls).".php";
if(file_exists($file)){
require_once $file;
} else {
throw new Exception("File not found: ".$file);
}
}
$dog = new Dog("German Shepard");
しかし、私はNot found exception
動物のクラスを取得し、$file
単にAnimals.php
名前空間がありません...
__autoload
名前空間を取得して関数のパスに含める方法を教えてもらえますか?それとも、親子で同じ名前空間を使用した方がよいのでしょうか?
そして、私が理解したように、正しい名前空間 = ファイルの場所は?