자신만의 MVC 프레임워크에서 모든 모델의 부모 구현
모든 모델의 부모 클래스를 구현해 봅시다:
<?php
namespace Core;
class Model
{
private $link;
public function __construct()
{
$this->link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query($this->link, "SET NAMES 'utf8'");
}
protected function findOne($query)
{
// 여기에 어떤 코드가 있을 것입니다
}
protected function findMany($query)
{
// 여기에 어떤 코드가 있을 것입니다
}
}
?>
보시다시피, 클래스 생성자에서 데이터베이스 연결을 수행합니다. 그러나 문제가 있습니다: 생성되는 각 모델 (하나의 컨트롤러 액션 내에 여러 모델이 있을 경우)이 자체적으로 데이터베이스에 연결하게 되는데, 이는 최적이 아닙니다.
데이터베이스 연결이 처음 생성된 모델에 대해서만
생성되고, 나머지 모델은 이미 생성된 연결을 사용하도록
해봅시다. 이를 위해 속성 link를 정적으로
만들겠습니다:
<?php
namespace Core;
class Model
{
private static $link;
public function __construct()
{
if (!self::$link) { // 속성이 설정되지 않았다면 연결합니다
self::$link = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_query(self::$link, "SET NAMES 'utf8'");
}
}
protected function findOne($query)
{
}
protected function findMany($query)
{
}
}
?>
제공된 Model 클래스 코드를 복사하여
/core/Model.php 파일에 배치하세요.
이 클래스에서 findOne 메서드를 구현하세요.
그 동작을 확인하세요.
이 클래스에서 findMany 메서드를 구현하세요.
그 동작을 확인하세요.