こんにちは、私は最近、さらに別のプロジェクトを開始しました。私の上司は、MVC モデルを使用するよう主張しています。問題は、これを行うためのさまざまな方法を示す多くの記事のために、適切な MVC モデルがどのように見えるべきかについて合意できていないことです。
したがって、これがこのプロジェクトの私の問題です(これが正しい方法であるかどうかにかかわらず)私は次のベースラインルールを使用しています
コントローラ クラスは、モデル クラスからのデータの取得とビュー クラスへのデータの受け渡し、およびビューの取得と表示の両方を管理します。
モデル クラスはすべてのデータベース アクションを管理し、次を使用してデータを返します。mysql_fetch_assoc
ビュークラスは、データなどを使用してビューを作成します。
したがって、私の問題は、mysql_fetch_assoc
通常、このようなことを行う情報を処理することです(すでにクエリを実行していると仮定します)
while ($row = mysql_fetch_assoc($result)) {
echo $row["username"];
}
しかし、モデルではなくビュークラスで結果を処理しているため、既に連想配列をビューに渡しているときにすべての結果を循環するにはどうすればよいですか?現在、それがループし続けるという問題が発生していますメモリサイズエラーに達するまで結果が表示されないため、何らかの理由で、循環する必要がある結果の数を把握できません
私の現在のコード スニペットは以下のとおりです。説明が不十分で申し訳ありません。
コントローラー require_once 'admin_model.php'; require_once 'admin_view.php';
class admin_controller {
public $model;
public $view;
public function __construct() {
$this->model = new admin_model;
$this->view = new admin_view;
}
public function get_group_view() {
$in_model = $this->model->get_group_view();
$in_view = $this->view->get_group_view ($in_model);
echo $in_view;
}
モデルクラス admin_model {
public function get_group_view() {
$query = mysql_query("
SELECT
group_id,
group_name
FROM
user_groups
");
return mysql_fetch_assoc($query);
}
}
意見
class admin_view {
public function get_group_view($group_data) {
while($group_data) {
$output .= $group_data['group_id'] . '###' . $group_data['group_name'] . '<hr />';
}
return $output;
}
}
現在エラーを返すもの:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133693393 bytes)
モデルクラスから「mysql_fetch_assoc」関数を移動せずに結果を確認するための最良の方法について、誰かが私にアドバイスしてもらえますか?
PS私はおそらくMVCを完全に間違っていることを知っていますが、それは私たちにとってはうまくいき、コードをもう一度調査して変更する必要はありません。