0
からデータをロードしようとしたとき、私はプロジェクト構造をMVCする方法を学ぶ/働いています。私は、データベースコネクタ、レジストリクラス、モデル、アプリケーションモデルを持っています。私はそれを確認するためにこれらのすべてを1つの場所に持っています。問題は、私が実行するときにこれらの3つのエラーが発生することです。エラーのMySQL
<?php
class db
{
protected $conn;
protected $host, $username, $password, $database;
public function __construct($host, $username, $password, $database)
{
$this->conn = new mysqli($host, $username, $password, $database)
OR die("There was a problem connecting to the database");
return true;
}
public function query($sql)
{
$result = $this->conn->query($sql);
if (!$result) {
die('Invalid query:');
}
return $result;
}
public function escape($value)
{
return $this->conn->real_escape_string($value);
}
public function countAffected()
{
return $this->conn->affected_rows;
}
public function getLastId()
{
return $this->conn->insert_id;
}
public function __destruct()
{
$this->conn->close()
OR die("Problem disconnecting from the database");
}
}
final class registry
{
private $data = array();
public function get($key)
{
return (isset($this->data[$key]) ? $this->data[$key] : null);
}
public function set($key, $value)
{
$this->data[$key] = $value;
}
public function has($key)
{
return isset($this->data[$key]);
}
}
abstract class Model
{
protected $registry;
public function __construct($registry)
{
$this->registry = $registry; // Undefined variable: registry
}
public function __get($key)
{
return $this->registry->get($key);
}
public function __set($key, $value)
{
$this->registry->set($key, $value);
}
}
class MemberModel extends Model
{
public function getMember()
{
$result = $this->query("SELECT * FROM members"); //Call to undefined method MemberModel::query()
return $result;
}
}
// DB
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'pcaframework');
$registry = new registry();
// Database
$db = new db(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
$membermodel = new MemberModel(); //Missing argument 1 for Model::__construct()
$allMembers = $membermodel->getMember();
while ($row = mysqli_fetch_assoc($allMembers)) {
echo "First Name: " . $row['name'] . "<br />";
echo "Last Name: " . $row['email'] . "<br />";
echo "<hr />";
}
- モデルの引数1がありません:: __構築物()、$のmembermodelで呼び出さ=新しいMemberModelを();
- 未定義の変数:未定義のメソッドMemberModelにレジストリ
- コール::クエリ()
私は、エラーが発生した場所を正確にマークするために、コードに誤りがコメントしています。
オリベラ、抽象クラスモデル>関数__get($キー)の文字列のメンバ関数のget()を呼び出して、すべての3つの問題を解決しますが、私に新しいものを与えた>の$ this - > registry-> GET($キーを返します); // –
レジストリクラスの関数 "get"を次のように置き換えてください。 public function get($ key) { return(isset($ this-> data [$ key])))? $ this-> data [$ key]:null; } –
...エラーは私がコード教えてください –