
前回質問した時とあんまり進捗してないんで恥ずかしいのですが……
恥を忍んで伺います……
オートロード関数のspl_autoload_registerの働きについて。
宣言したあとどのタイミングでクラスが呼び出されて読み込まれるのかいまいちわからなくて……
ソースは前に質問した"パーフェクトphpの7章の例題の変数の中身が知りたい。"と一緒です。
newされた時と、repuireされたクラスの継承元に帰るとき?に呼び出しされるのでしょうか?
netbeansで実行過程を眺めるのですが、あちこち飛んで、わからないことが多すぎてついていけません。
SQL文も高度なもので解説もされてないのでわからないです。
オブジェクト指向についてはなんとなーく理解しました。
値の保持と実行を利用しやすい形にまとめた物って感じであってますよね?
何かphpとsqlの初級と中級の間を取り持ってくれる、パーフェクトphpを読破できる参考書なり参考資料なりがほしいで出来れば紹介してください。
どうかお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答5件
6
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
3
spl_autoload_registerの働き (オートロード) の理解について
問題無いと思います。
かん違いする人がいるかもしれないので、正確には
パーフェクトPHP デバッグ 処理の流れ (1/5) の
- 最初の spl_autoload_register ClassLoader 'loadClass'
- その後の 複数の loadClass
を、見てください。
複数の loadClass が、
- newされた時
- repuireされたクラスの継承元に帰るとき
に呼び出しされます。
投稿2019/12/15 05:29

退会済みユーザー
総合スコア0
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
3
回答です。
spl_autoload_registerの働き (オートロード) の理解について
問題無いと思います。
SQL について
SQL 第2版 ゼロからはじめるデータベース操作
国内では、ミックさんの本(複数)が定番です。
データベースの考え方 が書かれている点が、他の本との違いです。
パーフェクトPHP (7章、8章、サンプルコード) の疑問点について
こちらのサイトの
コメント欄に、疑問点を書いてください。
マンツーマン で対応します。
NetBeans IDE デバッグ機能 をすすめましたが、サポートが不足していました。
解決策を考えていたので、回答が遅れました。
申し訳ありません。
投稿2019/12/11 07:43
編集2019/12/14 02:57
退会済みユーザー
総合スコア0
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント

1
ベストアンサー
値の保持と実行を利用しやすい形にまとめた物って感じであってますよね?
ここで「はい」と言ってしまうと良くないので「そうとは限らない」という回答にとどめます。
実装者や設計によってどのような役割やメリットが与えられるか違ってきます。
それこそ「デザインパターン」をキーワードに調べてみるとより深く知ることができるのではないかと思います(PHPに限った話ではないですね)
それを踏まえた上で、
netbeansで実行過程を眺めるのですが、あちこち飛んで、わからないことが多すぎてついていけません。
上記が「あちこち飛んでもきちんと意味を分かって解釈できる」くらいになると、「オブジェクト指向を理解できた」と言えるかもしれません。
何かphpとsqlの初級と中級の間を取り持ってくれる、パーフェクトphpを読破できる参考書なり参考資料なりがほしいで出来れば紹介してください。
本を読むための本を求めている時点で読むことが目的になっています。
実際にはPHPを用いて開発していきたいのですよね?Webアプリケーションを作っていきたいのですよね?
でしたらやはりPHPマニュアルの活用は必須ですし、エラーをきちんと読むこと、デバッグをすること、など、開発する上で必要な取り組みをしていくべきと思います。
パーフェクトPHPも確かに素晴らしい書籍ではありますが、対応するPHPのバージョンは新しいものではないため、業務や実務で使えるかというと必ずしもそうではありません。
実際の現場では余程レガシーなシステムを除いてはフレームワークが導入されていますし、現場のルールに則って開発が進められています。
ドキュメントやコードを読んでそのルールを理解し、それに則って書いていける力をつけていく必要があります。
ので、「読破するために何かを探す」のではなく、「これまで学習してきたことを活かして何かを作る」方向にシフトしていった方が良いと思います。
使ってみて作ってみて分かることも多いです。
人に説明することなんて、自身の理解度を試すにはもってこいですよ。
インプットばかりでは何も実感できませんので、アウトプットを考えてみましょう。
投稿2019/12/09 04:30
総合スコア80600
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント

退会済みユーザー
2019/12/09 04:49
0
サーバ エラー?
重複投稿です。
投稿2019/12/15 05:32
編集2019/12/15 05:41
退会済みユーザー
総合スコア0
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
受付中
インスタンスを使用して複数の商品の合計金額を出す方法について教えてください
回答1
クリップ0
更新
2023/06/03
意見交換
受付中
クラスの public function について、public を省略しますか?しませんか?
回答10
クリップ1
更新
2023/05/24
Q&A
受付中
[php][javascript]ボタンが押されたかどうかを検証するページを作りたい
回答2
クリップ0
更新
2023/06/02
意見交換
受付中
Javaの抽象クラスとインタフェースの使い分け
回答3
クリップ1
更新
2023/06/01
Q&A
解決済
PHPで「+」を文字列として認識させる方法(暗号化と復号)
回答2
クリップ1
更新
2023/06/01
Q&A
解決済
ハンバーガーメニューの挙動について(transitionが、もとに戻る時には適応されない)
回答2
クリップ0
更新
2023/06/02
意見交換
クローズ
ブラウザーバックを効かないようにする方法はありますか。
回答23
クリップ6
更新
2023/05/13
意見交換
クローズ
プログラミングの設計が分からない
回答24
クリップ11
更新
2023/04/17
同じタグがついた質問を見る
Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。
SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2020/04/19 06:54 編集
2021/04/03 06:40 編集