Pull to refresh

Создания приложения на Doophp 1.5

Reading time4 min
Views1.7K
Я был очень огорчён что не нашёл на хабре подобной теоретической статьи. И так имеется DooPHP версии 1.5 которая была выпущена 6 октября 2013 года. На официальном сайте переведены такие графики производительности

image

Также на хабре имеется статья по поводу производительности ссылка.

Разработка простой формы логинизации под катом.

Итак, имеем OpenServer:

image

С такой конфигурацией:

image

Также на офф сайте DooPHP ссылки на файлы фреймворка были не рабочими, с помощью гугла я нашёл версию 1.5 тут.

Приступим:

В корневую директорию сайта (у меня это C:\web\OpenServer\domains\doophp) распаковываем всё содержимое из архива в папке «app», также туда же папку «dooframework». Имеем следующую структуру:

image

Разбираемся по подробнее что к чему:

«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');

Переходи в наш веб-браузер заходим по нашему адресу и видим:

image

Страницу приветствия фреймворка.

Настройка Базы Данных:

Создадим таблицу (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');
		}
    }


Проверяем работоспособность:

Вводим пустые поля видим ошибку.

image

Вводим заведомо не правильны пароль видим ошибку.

image

Вводим правильны логин и пароль видим форму приветствия.

image

Выводы

При разработке этого мини задания не трудны было найти документацию и примеры, но при более трудных задачах комьюнити очень будет не хватать. Также многие вещи в более популярных фреймворках реализованы автоматически. Разрабатывать что либо на данном продукте или выбрать более популярные фреймворки с более полной документацией и комьюнити решать вам.

Проект на Github: https://github.com/izac1/DoophpSimpleApp.git
Tags:
Hubs:
Total votes 2: ↑0 and ↓2-2
Comments0

Articles