0
프로젝트 구조를 mvc하는 방법을 배우고 있습니다. 데이터베이스 커넥터, 레지스트리 클래스, 모델 및 응용 프로그램 모델이 있습니다. 나는이 모든 것들을 한 곳에서 점검하여 작동하는지 확인합니다. 문제는 내가 실행할 때 이러한 세 가지 오류가 발생합니다.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에
- 전화 : 쿼리()
나는 오류가 발생한 위치를 정확히 표시하기 위해 코드에서 오류가 댓글을 달았습니다.
올리베아 (Olivera)는 세 가지 문제를 모두 해결했지만 나에게 새로운 것을주었습니다. 멤버 함수를 호출합니다. abstract 클래스 모델에서 string에 get() 함수를 호출합니다. function __get ($ key)> return $ this-> registry-> get ($ key); // –
레지스트리 클래스에서 "get"함수를 다음과 같이 바꿔보십시오. public function get ($ key) { return (isset ($ this-> data [$ key])))? $ this-> data [$ key] : null; } –
그 오류가 계속 발생했습니다 –