前回質問した時とあんまり進捗してないんで恥ずかしいのですが……
恥を忍んで伺います……
オートロード関数のspl_autoload_registerの働きについて。
宣言したあとどのタイミングでクラスが呼び出されて読み込まれるのかいまいちわからなくて……
ソースは前に質問した"パーフェクトphpの7章の例題の変数の中身が知りたい。"と一緒です。
newされた時と、repuireされたクラスの継承元に帰るとき?に呼び出しされるのでしょうか?
netbeansで実行過程を眺めるのですが、あちこち飛んで、わからないことが多すぎてついていけません。
SQL文も高度なもので解説もされてないのでわからないです。
オブジェクト指向についてはなんとなーく理解しました。
値の保持と実行を利用しやすい形にまとめた物って感じであってますよね?
何かphpとsqlの初級と中級の間を取り持ってくれる、パーフェクトphpを読破できる参考書なり参考資料なりがほしいで出来れば紹介してください。
どうかお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
spl_autoload_register
【パーフェクトPHP の spl_autoload_register について】
spl_autoload_register(array($this, 'loadClass'));
spl_autoload_register は、「分かる人には分かりますが、分からない人には分からない」関数の一つですが、機能別に見ていくと、分かりやすいです。
- spl_autoload_register がやっていること
loadClass を、PHP が決めた場所 に 登録 します
spl_autoload_register がやっていることは、これだけです
- loadClass がやっていること
public function loadClass($class) {...}
core, models フォルダ内のクラスを require します
(controllers フォルダは、対象外)
- PHP がやっていること
サンプルコードに書かれていないことです ← ここが分かりにくい原因
処理の流れ (1/5)↓ には書かれています
require されてないクラスが、new や extends された時、
登録された loadClass を 実行します
require されてないクラスが、require されます (オートロード)
- 用語の理解は、後でも大丈夫です
__autoload キュー = PHP が決めた場所 (spl が決めた場所)
コールバック関数 = loadClass のこと (spl_autoload_register に、引数として渡す関数)
- その他
直観的に理解するには、
パーフェクトPHP デバッグ の 処理の流れ (1/5) | ユーザ登録機能作成 を見るのが一番簡単です。
NetBeans デバッグ方法 loadClass デバッグ例 も役立ちます。
退会した質問者さんの「spl_autoload_registerの働き (オートロード) の理解」は正しいです。
【Composer のオートロードについて】
パーフェクトPHP の サンプルコードに、Composer は使いません。
パーフェクトPHP の spl_autoload_register の質問には、
Composer のオートロードについての回答やコメントが付きます。
パーフェクトPHP の サンプルコードは、フレームワークの作成 がテーマなので、
プラグインやテンプレートを使わない 素のPHP で、フレームワークを実現しています。
オートロードも、素のPHP で書かれています。
Composer を使ってしまうと、フレームワークを理解する という目標がズレてしまいます。
(ブラックボックスになるか or 難易度が高くなります)
変更箇所も多くなります。
Composer についての回答やコメントは、学習する人を混乱させますが、
回答者などが、パーフェクトPHP を読んでいないので、仕方ありません。
投稿2019/12/26 02:54
編集2019/12/30 01:28退会済みユーザー
総合スコア0
0
spl_autoload_registerの働き (オートロード) の理解について
問題無いと思います。
かん違いする人がいるかもしれないので、正確には
パーフェクトPHP デバッグ 処理の流れ (1/5) の
- 最初の spl_autoload_register ClassLoader 'loadClass'
- その後の 複数の loadClass
を、見てください。
複数の loadClass が、
- newされた時
- repuireされたクラスの継承元に帰るとき
に呼び出しされます。
投稿2019/12/15 05:29
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
回答です。
spl_autoload_registerの働き (オートロード) の理解について
問題無いと思います。
SQL について
SQL 第2版 ゼロからはじめるデータベース操作
国内では、ミックさんの本(複数)が定番です。
データベースの考え方 が書かれている点が、他の本との違いです。
パーフェクトPHP (7章、8章、サンプルコード) の疑問点について
こちらのサイトの
コメント欄に、疑問点を書いてください。
マンツーマン で対応します。
NetBeans IDE デバッグ機能 をすすめましたが、サポートが不足していました。
解決策を考えていたので、回答が遅れました。
申し訳ありません。
投稿2019/12/11 07:43
編集2019/12/14 02:57退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
値の保持と実行を利用しやすい形にまとめた物って感じであってますよね?
ここで「はい」と言ってしまうと良くないので「そうとは限らない」という回答にとどめます。
実装者や設計によってどのような役割やメリットが与えられるか違ってきます。
それこそ「デザインパターン」をキーワードに調べてみるとより深く知ることができるのではないかと思います(PHPに限った話ではないですね)
それを踏まえた上で、
netbeansで実行過程を眺めるのですが、あちこち飛んで、わからないことが多すぎてついていけません。
上記が「あちこち飛んでもきちんと意味を分かって解釈できる」くらいになると、「オブジェクト指向を理解できた」と言えるかもしれません。
何かphpとsqlの初級と中級の間を取り持ってくれる、パーフェクトphpを読破できる参考書なり参考資料なりがほしいで出来れば紹介してください。
本を読むための本を求めている時点で読むことが目的になっています。
実際にはPHPを用いて開発していきたいのですよね?Webアプリケーションを作っていきたいのですよね?
でしたらやはりPHPマニュアルの活用は必須ですし、エラーをきちんと読むこと、デバッグをすること、など、開発する上で必要な取り組みをしていくべきと思います。
パーフェクトPHPも確かに素晴らしい書籍ではありますが、対応するPHPのバージョンは新しいものではないため、業務や実務で使えるかというと必ずしもそうではありません。
実際の現場では余程レガシーなシステムを除いてはフレームワークが導入されていますし、現場のルールに則って開発が進められています。
ドキュメントやコードを読んでそのルールを理解し、それに則って書いていける力をつけていく必要があります。
ので、「読破するために何かを探す」のではなく、「これまで学習してきたことを活かして何かを作る」方向にシフトしていった方が良いと思います。
使ってみて作ってみて分かることも多いです。
人に説明することなんて、自身の理解度を試すにはもってこいですよ。
インプットばかりでは何も実感できませんので、アウトプットを考えてみましょう。
投稿2019/12/09 04:30
総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/09 04:49
2019/12/09 05:08
0
サーバ エラー?
重複投稿です。
投稿2019/12/15 05:32
編集2019/12/15 05:41退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/19 06:54 編集
2021/04/03 06:40 編集