Я был очень огорчён что не нашёл на хабре подобной теоретической статьи. И так имеется DooPHP версии 1.5 которая была выпущена 6 октября 2013 года. На официальном сайте переведены такие графики производительности
Также на хабре имеется статья по поводу производительности ссылка.
Разработка простой формы логинизации под катом.
Итак, имеем OpenServer:
С такой конфигурацией:
Также на офф сайте DooPHP ссылки на файлы фреймворка были не рабочими, с помощью гугла я нашёл версию 1.5 тут.
В корневую директорию сайта (у меня это C:\web\OpenServer\domains\doophp) распаковываем всё содержимое из архива в папке «app», также туда же папку «dooframework». Имеем следующую структуру:
Разбираемся по подробнее что к чему:
«dooframework» — все файлы самого фреймворка.
«global» — хранилище файлов сайта (css,js,img,swf).
«protected» — php файлы вашего приложения (файлы конфигурация, контролер, модель, отображения, доп. модули).
«tools» — доп. утилиты и инструменты.
Настраиваем наше приложение:
Редактируем файл настроек (C:\web\OpenServer\domains\doophp\protected\config\common.conf.php)
задаём пути к папке с файлами фреймворка и нашего приложения:
в
также можем настроить какие ошибки выводить и временную зону:
Переходи в наш веб-браузер заходим по нашему адресу и видим:
Страницу приветствия фреймворка.
Создадим таблицу (User) c полями:
id
username
password
name
Теперь нам нужно подключить БД к фреймворку, делаем это в файле C:\web\OpenServer\domains\doophp\protected\config\db.conf.php
раскомментируем и настраиваем строчку:
так же нужно настроить роутинг для этого в корне раскомментируем .htaccess и в файл
C:\web\OpenServer\domains\doophp\protected\config\routes.conf.php
Добавим:
В папке C:\web\OpenServer\domains\doophp\protected\controller создаём новый файл LoginController.php
В нём пишим:
В папке C:\web\OpenServer\domains\doophp\protected\view создаём файл login.html с содержимым:
P.S. при рендере у меня выскочила ошибка мол такой файл не найден в папке viewc, я так понимаю это кэш, но вместо файла login.php в этой самое папке место фала создалась папка login.php я думаю это либо из версии PHP так как у меня она 5.3.*, а требуется по документации 5.1.*. Я создал пустой файл login.php ошибка пропала.
В папке C:\web\OpenServer\domains\doophp\protected\model создаём файл и заполняем его
После этого в роутинг добавляем запись чтобы POST запрос уходил в нужный нам метод, в файле routes.conf.php
добавим строку
В отображения добавим файл приветствия для пользователя который прошёл логинизацию
в паке «view» создадим файл success.html запишем в него
В контроллер добавим функцию проверки:
Вводим пустые поля видим ошибку.
Вводим заведомо не правильны пароль видим ошибку.
Вводим правильны логин и пароль видим форму приветствия.
При разработке этого мини задания не трудны было найти документацию и примеры, но при более трудных задачах комьюнити очень будет не хватать. Также многие вещи в более популярных фреймворках реализованы автоматически. Разрабатывать что либо на данном продукте или выбрать более популярные фреймворки с более полной документацией и комьюнити решать вам.
Проект на Github: https://github.com/izac1/DoophpSimpleApp.git
Также на хабре имеется статья по поводу производительности ссылка.
Разработка простой формы логинизации под катом.
Итак, имеем OpenServer:
С такой конфигурацией:
Также на офф сайте DooPHP ссылки на файлы фреймворка были не рабочими, с помощью гугла я нашёл версию 1.5 тут.
Приступим:
В корневую директорию сайта (у меня это C:\web\OpenServer\domains\doophp) распаковываем всё содержимое из архива в папке «app», также туда же папку «dooframework». Имеем следующую структуру:
Разбираемся по подробнее что к чему:
«dooframework» — все файлы самого фреймворка.
«global» — хранилище файлов сайта (css,js,img,swf).
«protected» — php файлы вашего приложения (файлы конфигурация, контролер, модель, отображения, доп. модули).
«tools» — доп. утилиты и инструменты.
Настраиваем наше приложение:
Редактируем файл настроек (C:\web\OpenServer\domains\doophp\protected\config\common.conf.php)
задаём пути к папке с файлами фреймворка и нашего приложения:
$config['SITE_PATH'] = '/';
$config['BASE_PATH'] = '/dooframework/';
в
$config['SITE_PATH'] = '/';
нужно указать полный путь и закончить символом '/' (C:\\web\..../).также можем настроить какие ошибки выводить и временную зону:
error_reporting(E_ALL | E_STRICT);
date_default_timezone_set('Asia/Kuala_Lumpur');
Переходи в наш веб-браузер заходим по нашему адресу и видим:
Страницу приветствия фреймворка.
Настройка Базы Данных:
Создадим таблицу (User) c полями:
id
username
password
name
CREATE TABLE `test`.`User` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 20 ) NOT NULL ,
`password` CHAR( 32 ) NOT NULL ,
`name` VARCHAR( 40 ) NOT NULL
);
Теперь нам нужно подключить БД к фреймворку, делаем это в файле C:\web\OpenServer\domains\doophp\protected\config\db.conf.php
раскомментируем и настраиваем строчку:
$dbconfig['dev'] = array('localhost', 'database', 'root', '1234', 'mysql', true);
так же нужно настроить роутинг для этого в корне раскомментируем .htaccess и в файл
C:\web\OpenServer\domains\doophp\protected\config\routes.conf.php
Добавим:
$route['*']['/login'] = array('LoginController', 'index');
Контроллер:
В папке C:\web\OpenServer\domains\doophp\protected\controller создаём новый файл LoginController.php
В нём пишим:
<?php
class LoginController extends DooController {//Создаём класс LoginController наследуем DooController
protected $data = array();
/* This function is called by DooPHP before we run an action */
public function beforeRun($resouce, $action) {
// Get the sites base url i.e. http://localhost/ (includes the / at the end)
$this->data['app_url'] = Doo::conf()->APP_URL;
}
public function index() {
$this->data['pagetitle'] = 'login';
$this->view()->render('login',$this->data);//Отрисовываем форму
}
}
?>
Отображение:
В папке C:\web\OpenServer\domains\doophp\protected\view создаём файл login.html с содержимым:
<html>
<head>
<title>To Doo List Manager :: {{pagetitle}}</title>
</head>
<body>
<h1>To Doo List Manager :: {{pagetitle}}</h1>
<p>Please Login</p>
<form method="post">
<label for="txt_username">Username</label>
<input type="text" name="txt_username" /><br />
<label for="txt_password">Password</label>
<input type="password" name="txt_password" /><br />
<p class="error">Error: {{errorMsg}}</p>
<input type="submit" value="Login" />
</form>
</body>
</html>
P.S. при рендере у меня выскочила ошибка мол такой файл не найден в папке viewc, я так понимаю это кэш, но вместо файла login.php в этой самое папке место фала создалась папка login.php я думаю это либо из версии PHP так как у меня она 5.3.*, а требуется по документации 5.1.*. Я создал пустой файл login.php ошибка пропала.
Модель
В папке C:\web\OpenServer\domains\doophp\protected\model создаём файл и заполняем его
Doo::loadCore('db/DooModel');
class User extends DooModel {
public $id;
public $username;
public $password;
public $name;
public $_table = 'user';
public $_primarykey = 'id';
public $_fields = array('id', 'username', 'password', 'name');
public function get_user(){
if(!$this->username or !$this->password){
return array('errorMsg'=>"At least one field was empty");
}else{
$a=Doo::db()->find( $this, array('limit'=>1));
if($a){
return true;
}else return array('errorMsg'=>"no user or wrong pass");
}
}
function __construct(){
parent::$className = __CLASS__;
}
}
После этого в роутинг добавляем запись чтобы POST запрос уходил в нужный нам метод, в файле routes.conf.php
добавим строку
$route['post']['/login'] = array('LoginController', 'login');
В отображения добавим файл приветствия для пользователя который прошёл логинизацию
в паке «view» создадим файл success.html запишем в него
<html>
<body>
<h1>Success!</h1>
</body>
</html>
В контроллер добавим функцию проверки:
public function login() {
$this->data['pagetitle'] = 'login';
Doo::loadModel('User');
$u = new User;
$u->username=$_POST['txt_username'];
$u->password=md5($_POST['txt_password']);
$ab=$u->get_user();
if(isset($ab['errorMsg'])){
$this->data['errorMsg']=$ab['errorMsg'];
$this->view()->render('login',$this->data);
}else{
$this->view()->render('success');
}
}
Проверяем работоспособность:
Вводим пустые поля видим ошибку.
Вводим заведомо не правильны пароль видим ошибку.
Вводим правильны логин и пароль видим форму приветствия.
Выводы
При разработке этого мини задания не трудны было найти документацию и примеры, но при более трудных задачах комьюнити очень будет не хватать. Также многие вещи в более популярных фреймворках реализованы автоматически. Разрабатывать что либо на данном продукте или выбрать более популярные фреймворки с более полной документацией и комьюнити решать вам.
Проект на Github: https://github.com/izac1/DoophpSimpleApp.git