の spl_autoload_register にて、 Todo クラスが New された時に Todo.php が取り込まれているので、Todo.php( Todo クラス)を読み込むに当たって、
use MyApp\Todo;
と spl_autoload_register がダブっているのではないか、いずれかは不要なのではないか、でも、そんなことはないだろう、とのことから、再び、名前空間と use とファイルの取り込みについて、頭が混乱してしまっています。
今回の動画については、「 use キーワードを使うことで、名前空間の全て、または一部をインポート、クラスをインポートできる」というのが正しいのなら、疑問は解消しますが、後段の「 PHP で Todo 管理アプリを作ろう クラス編」の「#10 名前空間を設定しよう」での疑問点については、どうなのでしょうか?
大変、お世話になります。
去年の年末にも、名前空間や
useキーワード、ファイルの取り込みについてお尋ねさせて頂きましたが、今回、こちらの動画を見て、また、もやもや感が出て来ましたので、あらためて、質問をさせて頂いております。前回の質問 : https://dotinstall.com/q/24705 (前回の質問では、頭が混乱しすぎて、何に疑問が湧いているのかがまとまっておらず、意味不明な質問になってしまっていますが、こちらの質問の 12/30 の 17:15 と 21:49 に投稿した箇所をご参照ください。)
前回の質問時は、こちらのサイト( https://qiita.com/7968/items/1e5c61128fa495358c1f#use-%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 )の「
useキーワードについて」の箇所の、「useキーワードを使うことで、名前空間の全て、または一部をインポート、クラスをインポートできる」という記述にて、「useは名前空間を読み込むので、 PHP ファイルを読み込む云々に関係なく、その名前空間にあるクラスが読み込める」という理解に至りました。再度の確認と言いますか、質問なのですが、今回の動画に関しても、
を記述することで
Postクラス をインポートしているので、 App/Models/Post.php をrequire_once等でインポートしなくてもPostクラスが使えている、という理解で間違いないでしょうか?と言いますのも、今回、再び、疑問が湧いてきたので、「 PHP で Todo 管理アプリを作ろう クラス編」の「#10 名前空間を設定しよう」の動画を見直してみました。
そちらの動画の index.php の冒頭に、下記のコードがあります。
もし、上記の理解で間違いがなければ、
については、上部の
にて Database.php(
Databaseクラス)を取り込んでいるので使えている、ということだと思います。一方、あれっと思ったのが、
の箇所で、こちらは
にて取り込めているので、辻褄が合うなと思いきや、
の
spl_autoload_registerにて、TodoクラスがNewされた時に Todo.php が取り込まれているので、Todo.php(Todoクラス)を読み込むに当たって、と
spl_autoload_registerがダブっているのではないか、いずれかは不要なのではないか、でも、そんなことはないだろう、とのことから、再び、名前空間とuseとファイルの取り込みについて、頭が混乱してしまっています。今回の動画については、「
useキーワードを使うことで、名前空間の全て、または一部をインポート、クラスをインポートできる」というのが正しいのなら、疑問は解消しますが、後段の「 PHP で Todo 管理アプリを作ろう クラス編」の「#10 名前空間を設定しよう」での疑問点については、どうなのでしょうか?できるだけ、質問の趣旨をご理解頂けるよう、詳しく書いているつもりですが、もし、意味不明な箇所がありましたら、ご指摘頂ければと思います。
ややこしい質問ですが、宜しくお願い致します。