ネストされた関数の必要性を疑問視するSOに関する回答を読んでいますが、1)コードが間違っている理由と2)書いたものを機能させるために修正する方法、またはスクリプトを変更する方法をまだ理解していませんより受け入れられます (パーサーだけでなく、経験豊富な開発者にも)。私はPHP OOPが初めてであることを述べさせてください...
アイデアは、以前に定義した関数を他の多くの関数で使用したいので、毎回コードを書き直す必要がありません。
getMedia () 内で selectMediaIds () を呼び出す行を指す致命的なエラー「未定義関数の呼び出し」をスローする欠陥のあるコードを次に示します... (参考までに、変数の初期化、コンストラクター、ゲッター、セッターを意図的に省略しました。 、などを使用して、投稿をよりコンパクトにします。)
<?php
class MediaManager {
private function selectMediaIds (MObject $object) {
$medias = array ();
$req = $this -> _db -> query ('SELECT media_idMedia FROM mObject_has_media WHERE mObject_idmObject = ' . $object -> id ());
while ($data = $req -> fetch (PDO::FETCH_ASSOC)) {
$medias[] = $data;
}
$req -> closeCursor ();
return $medias;
}
public function getMedia (MObject $object) {
$medias = array ();
$mediaIds = selectMediaIds ($object);
if ($mediaIds[0] != null) {
foreach ($mediaIds as $id) {
$req = $this -> _db -> query ('SELECT * FROM media WHERE idMedia = ' . $id);
$req -> fetch ();
$medias[] = $req;
//$medias[] = new Media ($req);
}
return $medias;
}
}}?>
ご回答ありがとうございます。