まず、私が何をしようとしているのかを説明します。私はPHPのルータでどのように動作しているのか、そしてオブジェクトでインスタンス化しています私はそこに問題がないルートを作ることができます。phpファイルローダーオブジェクトから変数を保持するものがありません
今私はもう少し複雑な何かをしようとしている、私は事前にファイル名を知らないだろうという名前のフォルダのルートからインクルードされたファイルからのルートをロードできるようにしたいです。それでも問題はない、かなりシンプル。私のインクルージョンを行う
は、私がなぜオブジェクトの内側に含まれたまま、思った、私は再帰的にフォルダからファイルをロードするために専用されるfileLoaderオブジェクトà作成する必要があります。私はそれをして、新しい物体を作った。私のローダーオブジェクト、設定すべきである$ルータの変数を呼び出すとき
さて、ではないと私はので、未定義の変数のルートを作成することはできません。説明のための少しのコード。
これはルータ・オブジェクトを呼び出す関数である:
public function loadFolder(string $path, string $directory){
$theDirectory = $path. "/" .$directory;
$files = scandir($theDirectory);
foreach($files as $file){
if(is_file($theDirectory. "/" .$file))
include_once($theDirectory. "/" .$file);
else{
if($file != "." && $file != "..")
$this->loadFolder($path, $directory. "/" .$file);
}
}
}
ルート例インクルードファイルから:
$router->get("/", function(){echo "Welcome on the home page!";});
これはfileLoaderから関数である
private function projectRooting(){
$router = new Router\Router($this->baseUri);
$fileLoader = new FileLoader();
$fileLoader -> loadFolder($this->fullDirName, "/routes");
// include_once($this->fullDirName."/routes/web.php");
$router->run();
}
コメントアウトされたコードでは動作しませんが、$ fileLoaderの部分にコメントを付けて、in clude_once、すべてが再び動く。
は私が別のオブジェクトから呼び出されたときに作品が含まれるように、何かを逃したことがありますか?
お返事場合は、事前に感謝し、私の下手な英語のため申し訳ありません。
だから、 'ます$ router->ラン();'あなたのための未定義ようですか?何かエラーが出ますか? – deFreitas
Nop、$ router-> run()は問題なく動作します。何も動作しないのは、loadFolderインクルードによって呼び出される別のファイルにある$ route-> getメソッドです。 –