Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> мой небольшой framework 
:(
    Опции темы
DrNemo
  Дата 15.3.2014, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: нет
Всего: 1



Привет всем.
Хочу показать вам свою небольшую поделку, которую уже давно пилю для собственных нужд. Интересно ваше мнение по нему, и возможные проблемы и не доработки.
Особенности:
  • MVC
  • Возможность размещать части сайта по разным папкам, а так же делать общие для всех сайтов компоненты.
  • Поддержка Active Record
  • Достаточно гибкие возможности для каждого action, позволяющие кардинально изменить поведение сайта.
  • Немного юмора)

Зовут Gallant )
https://github.com/DrNemo/gallant.mvc
http://gallantes.ru/ - тут немного о том как этим пользоваться)
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
jexerrus
Дата 19.3.2014, 09:51 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 17.3.2014

Репутация: нет
Всего: нет



Выглядит приятно

а какие плюсы по сравнению например с Yii ?
PM MAIL WWW   Вверх
DrNemo
Дата 20.3.2014, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: нет
Всего: 1



Пожалуй ни чего из уже реализованного, там не круче чем в yii. На мой взгляд yii очень громоздкий, по количеству кода необходимого для реализации задачи, мне приятен более компактный и как мне кажется лаконичный подход.
Так же я считаю, что некоторые моменты должен писать сам программист, это дает больше гибкости и контроля. Например авторизация, вот как на Yii перевести пользователей на новый формат хранения паролей(с md5 на crypt)?
Задачи которые я ставил перед собой, это минимум кода для реализации максимума функционала.
немножко примеров из разных рабочих проектов:
Список всех пользователей сервиса:
Код

function actionIndex(){
    $users = User::fetch();
    G::template()->tpl('member/index', array('users' => $users));
}

Создание новой задачи:
Код

function actionNewTask(){
    if($post = G::getRequest('post', 'new_task')){
        $user = G::get('User');

        $new_task = new Task($post);
        $new_task->auter_id = $user->id;
            
        if($new_task->save()){
            G::ref('/task/');
        }
    }
    G::template()->tpl('task/task-form');
}

Ну и тд)
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
DrNemo
Дата 21.3.2014, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: нет
Всего: 1



П.С.: https://github.com/DrNemo/gallant.mvc/blob/...controlBlog.php - пример контроллера блога
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
SamDark
Дата 21.3.2014, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Цитата

Например авторизация, вот как на Yii перевести пользователей на новый формат хранения паролей(с md5 на crypt)?


1. Рассылаем всем юзерам мыло с просьбой сменить пароль.
2. Дописываем в identity или методы, которые там используются,`if(начинается как хеш crypt) { новый код } else { старый код`.
3. Ждём.

Посмотрел немного. Местами узнаётся CodeIgniter в конструкциях вроде "define('GALLANT_SYSTEM', true);" и получении данных из сегментов URL.

1. С именованием плохо:

- Называть директорию контроллеров control странно. Почему для моделей не mod тогда?
- Шаблон head.php включает в себя разметку для тела и футер. Лучше как у всех назвать layout.
- G::getDomen() → G::getDomain()
- G::ref($url) почему не назвать G::redirect($url)?
- Auter → Author
- $f = function(&$v, $k, $f){ понять не просто....
- CONCET_MODEL?

2. Документацию лучше писать в markdown, в HTML замучаетесь...
3. Нет нормальной документации в phpdoc.
4. Нет тестов, а они очень нужны для фреймворка. Это всё-таки основа кучи проектов...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
DrNemo
Дата 21.3.2014, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: нет
Всего: 1



Цитата(SamDark @  21.3.2014,  01:49 Найти цитируемый пост)
1. Рассылаем всем юзерам мыло с просьбой сменить пароль.
2. Дописываем в identity или методы, которые там используются,`if(начинается как хеш crypt) { новый код } else { старый код`.
3. Ждём.

Немного расстрою вас, на письмо, если вам повезет, отреагируют процентов 10 пользователей)
Я бы сделал смену так (в методе авторизации):
Код

static public function auth($mail, $pass){
        $criteria = User::criteria()->where('mail = :mail')->attr(array(':mail' => $mail))->limit(1);
        $user = User::fetch($criteria)->first();
        
        if(!$user){
            G::setError('auth');
            return false;
        }

        if(!Password::verify($pass, $user->password)){ // новая проверка пароля
            if(md5($pass) == $user->password){ // старая проверка
                $user->password = Password::hash($pass); // сохраняем в новом виде
            }else{
                G::setError('auth');
                return false;
            }
        }
        if($user->bloced){
            G::setError('auth_bloced');
            return false;
        }
        $user->date_login = time();
        $user->save();

        G::setSession('User', array('id' => $user->id));        
        return true;
    }

Про именования спасибо, некоторые моменты учту)
G::ref($url) - имя этого метода "историческое", сейчас я уже даже не могу вспомнить почему именно так)
Auter → Author - эту модель создает сам программист, и название может дать ей любое

за markdown спасибо, попробую
Документация phpDoc сегодня перегружу.
Тесты уже пишу, так что скоро будут и они

И это всего лишь альфа, в ней еще много проблем и недоработок)
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
SamDark
Дата 21.3.2014, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Можно и при логине перехешировать. В любом случае использование или не использование Yii ничего не меняет.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Sanchezzz
Дата 25.3.2014, 23:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 2
Всего: 60



Добавлю еще такое:

css с шаблонами лучше не хранить 


Код приложения вообще как по правилу не должен доступен извне, конечно бывают исключения и за технических проблем.

Пример в Laravel 
app/
public/ это папка доступна из интернета.
vendor/ фрамеворк и другие библиотеки
 
Пример Yii2
app/ может на самом деле называться как хочешь
web/ это папка доступна из интернета.
vendor/ фрамеворк и другие библиотеки

Техническая проблема о которой говорилось выше
Иногда конечно такой структурой нельзя воспользоватся, например при хостинге где нет возможности править конфиг апача или ngnix
У каждой проблемы есть решение:
И то эту проблему достаточно переопределить base_path в конфиге приложения + index.php слегка подправить путь к фреймворку

ЗЫ мое чудо https://github.com/sanchezzzhak/Kitty-Framework, проект забросил так как пришел на Yii2 и laravel
возможно я продолжу начатое...

 

Это сообщение отредактировал(а) Sanchezzz - 25.3.2014, 23:45


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
DrNemo
Дата 26.3.2014, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 7.12.2005
Где: Не пейте ракетное топливо! :-)

Репутация: нет
Всего: 1



Для решения этой задачи в конфиге можно указать путь к каждой папке (моделей, контроллеров, шаблонов), так же поддерживаются массивы путей, что позволяет сделать например общие модели для нескольких сайтов (не смотря на разные папки доступны они будут в одном namespace).
--------------------
На свете есть только две вещи которые сносят башню - космос и женщины (К.Ю.Бунин)Самый мастдаевский сакс в том, что рулезные фичи глючат :))
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1437 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.