Создание движка на MVC. Начинаем работу с базой данных.
Привет всем! Продолжаем создавать наш движок, и сегодня мы начнем работу с базой данных. Поехали.
Создадим файл Database.php в папке libs.
<?php
class Database extends PDO {
public function __construct() {
parent::__construct('mysql:host=localhost;dbname=mvc', 'root', '');
}
}
?>
Здесь все понятно тем, кто знает ООП и PDO. Если же у вас есть с этим проблемы, прочитайте статьи про них на этом сайте.
В файле Model.php измените строчки
$this->db = new Database();
Создадим файл login_model.php в папке models.
<?php
class Login_Model extends Model {
public function test() {
}
}
?>
Перейдем в папку controllers, в файл login.php.
<?php
function index() {
require 'models/login_model.php';
$model = new Login_Model();
$this->view->render('login/index');
}
?>
А в главном index.php подключим базу.
// ...
require 'libs/View.php';
require 'libs/Database.php';
require 'config/paths.php';
// ...
Перейдем в phpmyadmin и создадим базу данных с именем mvc.
Пока оставим базу и перейдем в файл Controller.php
После создания объекта View пропишем следующее
<?php
public function loadModel($name) {
$path = 'models/'.$name.'_model.php';
if(file_exists($path)) {
require 'models/'.$name.'_model.php';
$modelName = $name.'_Model';
$this->model = new $modelName();
}
}
?>
Теперь откроем файл Bootstrap.php, найдем там строчку с созданием объекта контроллера и пропишем следующее
<?php
// ...
$controller = new $url[0];
$controller->loadModel($url[0]);
?>
Сейчас у нас выскакивает ошибка из-за login_model.
Зайдите в файл контроллера login.php и удалите из метода index его подключение и создание объекта, чтобы избавиться от ошибки.
Перейдем в файл login_model.php и создадим конструктор. Метод test можно удалить, так как он нам больше не нужен.
<?php
public function __construct() {
echo 111;
}
?>
Если вы теперь обновите страницу, то увидите, что все работает, и наши единички выводятся. Великолепно!
На этом мы заканчиваем, а в следующей статье мы продолжим работу над нашим движком.
Спасибо за внимание!
-
- Михаил Русаков
Комментарии (1):
Я роблю трохи по-іншому.. створюю для користувачів, наприклад, окремий клас, а потім в контролері викликаю методи. А в моделях - класи для роботи з базами даних, memcached i т.д
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.