Task framework

О фреймворке


Task framework основан на MVC парадигме с удобством использования и минимум функционала для решения простых задач.

В отличие от стандартных решений вместо контроллера тут используется задача (task)

Cсылка на фреймворк, который также использует task.

jsock-framework-tutorial.blogspot.com
java-framework-jsocket.blogspot.com
github.com/nnpa/jsock

Установка фреймворка task


1. Скачайте архив с фреймворком

2. Распакуйте в папку task в директорию где у вас хранятся сайты.

3. Скачайте каркас для приложения

4. Распакуйте в папку site в в директорию где у вас хранятся сайты.

5. Создайте базу данных в mysql.

6. Скачайте таблицу users и экспортируйте в созданную базу данных.

Должно получится такое дерево каталогов

/webroot/task

/webroot/site

7. Настройте веб сервер что бы корневая папка /webroot/site была привязана к определенному хосту при помощи веб сервера который вы используете.

8. Зайдите в папку config и откройте config.php и отредактируйте массив подключения к базе данных на ваши значения подключения и переменную host.

MVC парадигма


Task framework использует MVC парадигму для лучшего разделения логики шаблонов представлений, моделей и контроллера.

Вместо контроллера в Task framework используются задачи Task — задачи расположены в папке tasks и предназначены для выполнения логики приложения.

Модели хранятся в папке models и предназначены для работы с логикой базы данных.

Представления хранятся в папке view и предназначены для работы с логикой представления.

Task


Task (или Controller) располагаются в папке tasks.

Task создаются по переменной в url сайта request:

Если переменная request = test то будет создан экземпляр класса Task который хранится в папке tasks в файле test.php и называется test.

index.php?request=test

Пример класса test.php:

include_once('WebTask.php');

class Test extends WebTask{

	public function run(){

          //логика приложения

        }

}

Обязательно task должен быть унаследован от WebTask и в нем должен быть создан метод run()

Models


Models располагаются в папке models и отвечают за логику работы с базой данных.

Модели привычнее всего создавать в tasks.

Модель должна быть создана в папке models и быть унаследована от Model так же должно быть прописано поле $table_name.

Пример класса models/users.php:

class Users extends Model{

    public $table_name = 'users';

}

В классе Model заранее реализован набор методов для работы с базой данных.

findBySql

$users = new Users();

 $users->findBySql("SELECT * FROM `users`");

foreach($users as $user) {

      echo $user['email'] . "<br>";

}

findByPk

$users = new Users();

 $users->findByPk(3);

 echo $users->email;

find

$users = new Users();

 $users->find("email <> ''");

foreach($users as $user) {

     echo $user['email'] . "<br>";

}

update

$users = new Users();

 $users->findByPk(3);

$users->email = "yandex@mail.ru";

$users->update();

save

$users = new Users();

$users->email = "yandex@mail.ru";

$users->id    = NULL;

$users->save()

delete

$users = new Users();

$users->delete("id = 6");

exec

$users = new Users();

$users->exec("free sql string"); //mysqli_result

DB

App::$DB->exec("free sql string");//mysqli_result

view


Шаблоны представлений хранятся в папке /view/ отвечают за логику представлений.

Представление вызывается в конце метода run класса task при помощи метода render.

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

Пример site task:

include_once('WebTask.php');

class Site extends WebTask{

	public function run(){

              $users = new Users();

               $users->find("email <> ''");

	       $this->render('site',[

			'users' => $users,

		]);

	}

}

В методе run модель с пользователями передается в шаблон view/site.php где происходит обработка результатов поиска и генерация html:

<?php

foreach($users as $user) {

    echo $user['email'] . "<br>";

}

?>

Так же в папке view/layout расположен основной шаблон main.php который является главным шаблоном куда в переменную {content} подгружаются наши представления.

Авторизация пользователя


В фреймворке уже реализована регистрация и авторизация по ссылкам login и register.

Метод приложения который позволяет проверять являет ли пользователь авторизованным App::isGuest()

В завершении
task-framework blog

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

Спасибо.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 11

    +6
    Это что лаба в универе вместо Pastebin сюда попала?
      +5
      Вы молодец, что пытаетесь. Но вряд ли на Хабре место для статей такого уровня. Учитесь, изучайте PHP, изучайте, как устроены другие фреймворки — и не прекращайте писать код, даже если его критикуют. Особенно, если его критикуют!
        +1

        Я вот поддерживаю — пусть человек пишет код!
        (а не статьи о том, как оно пишет код)

        0

        Поздравляю, вы изобрели ADR.

          +4

          $users->findBySql("DROP DATABAE users");

            +1
            Не хотелось бы быть учителем… Попробуйте ниже перечисленное.

            1) Не нужно делать инклюды классов — попробуйте изучить composer.
            2) Освойте Git, это поможет контроллировать изменения в коде.
            3) Посмотрите на PSR. Скачайте PhpStorm и установите на него Cs Fixer
            4) Попробуйте отделить модель от операций с БД (можно загуглить паттерн «Репозиторий»)
            5) Попробуйте «отвязать» модель от итератора. Создайте класс ModelCollection
            6) В вашей модели $data это public-свойство. Но также есть публичные методы __get и __set работающие с этим свойством. Нужно оставить что-то одно
            7) В модели метод findOne может выбросить ошибку: обработайте строчку $id = $this->data[0][«id»];
            8) Удалите в модели метод exec. Он избыточен
              0
              Спасибо за замечания постараюсь в следующих версиях.
              Сейчас начал на нем разрабатывать сервис думаю после будет более серьезная версия.
              0

              Почитайте если не про весь SOLID, то хотя бы про SRP и DI

                0
                О, привет 2005-ой год! Тогда были актуальны такие фреймворки.
                  0

                  Тогда уже были серьёзные штуки вроде предшественника Yii, Prado. Кстати, жив до сих пор.

                  0
                  Такие статьи появляются несколько раз в год и являются результатом нежеления понимать, что происходит в мире PHP. Возможно автор раньше программировал на чем-то старом, теперь узнает о языке PHP, плохо владеет английским и вообще интернетом, и сидит по старинке, что-то выдумтывает сам. Последнее, в принципе, не так уж плохо, но такие поделки никому на хабре в статьях не могут быть интересны, ибо через это все уже прошли лет 10-15, а то и больше, назад. Достаточно позорно в 2020-ом году не знать про Composer (или хотябы просто про автозагрузку) и PSR, я уж не говорю про SOLID.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое