[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Gear Framework
Страницы: 1, 2, 3
linker
Требуется экспертная оценка и критика. Кому не лень и есть время, посмотрите, потрогайте пощупайте.

Здесь скачать - https://github.com/DenLinker/Gear
Здесь почитать (документация постоянно пополняется) - http://www.gearframework.ru

_____________
Gear Framework
Gear Framework на Github
inpost
Ну смотри. Не хватает вот чего:
http://socket.io/#how-to-use

То есть есть нечто сложное, на котором можно создавать сложные вещи. Но знакомиться с движком стоит на простых вещах.

1) Показать и расписать буквально по линку первого уровня о том, как просто создать несколько страниц на сайте: index, contacts, comments... http://site.ru/comments - вот такой создать очень просто, достаточно создать файлы в таких местах и поместить HTML туда, ПХП туда, вуаля, всё готово.

2) Мини-демо версия. Буквально распаковываешь демо-версию и получаешь несколько базовых страниц. Пусть это будет страница с отзывами, контактами. Самая малость, ведь тяжелее всего именно начать, то есть понять что куда копировать и где создавать.



_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
inpost
Вот что хотелось бы ещё сказать. Ты создаешь продукт и хочешь на него подсадить людей. Крутые программисты с 10-ю годами практики уже имеют свои наработки, кто-то привязался к какому-то крутому фрейм-ворку уже. Итак, мы их отсеиваем и получаем полу-про, которые мечутся туда-сюда и новички, которых очень легко подсадить на что-то. Новичков легко подсадить тогда, когда им легко и доступно дать и объяснить. Им дали Drupal + интернет-магазин, они на него подсели и дальше несколько лет будут только в нём и работать. То есть вместе с фреймворком развиваться. Таким надо разжевать особенности фреймворка и показать его простоту работы.
Средние - это тяжело копаться в чужом проекте, особенно глубоко.

Как говорится, первая доза должна быть легка, проста в получении и бесплатна.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
bestxp
1. Composer
2. Autoload через Composer
3. Bootsrap приьожение ( имеется ввиду скелет, загрузил и работай )
4. psr-4 или psr-0 именование
5. стандарты разработки приложений


а так удачи wink.gif
Michael
Одним глазком что заметил, это:
use \gear\Core;

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

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

_____________
There never was a struggle in the soul of a good man that was not hard
linker
inpost
1. Да я попытался создать маленький проект в разделе "Создание проекта", но пока ещё не закончил, так что спасибо наметил тут дорогу.
2. Да точно, не хватает, ещё там не хватает генератора кода и он в процессе разработки сейчас.

Самая проблема - это писать описание smile.gif не хватает у меня писательских навыков описать как всё круто, как легко и удобно smile.gif

bestxp
1. Нет, я исхожу из того, что фреймворк не должен зависеть от чего-то. Я эту тему перекладываю на приложение и тут подумаю конечно же.
2. Не задумывался, в любом случае фреймворк разработан так, что в нём можно заменить абсолютно любой компонент на своё, кроме ядра конечно же smile.gif
3. Да, надо, будет точно.
4. Вроде соответствует.
5. Да , не хватает описания, в процессе, спасибо напомнил, а то я забыл.

Michael
Без начального слэша это относительный путь, он относителен текущего пространства имён. Поэтому чтобы избежать проблем, всё именование абсолютное, относительно корня \

Да где-то похоже, но вся фишка в том, что когда я это начал писать и переписывать я об yii не знал ничего, только название smile.gif

Я не шибко знаю yii, но я так и не понял про валидацию моделей, у меня есть (в разработке) фильтры параметров в запросах GET/POST, но до них я ещё не добрался в описании и в коде. А в целом посыл понял, спасибо.

_____________
Gear Framework
Gear Framework на Github
bestxp
На счет композера, это просто совместимость с кучей других библиотек, это возможность того что о нем еще узнают и из набора библиотек самого композера

Да и управление зависимостями было бы куда лучше

так же заметил немного ошибочный подход через Gear\core
тут тебе стоитло бы посмотреть и сделать сервис локатор или Depedency Injection контейнер, это очень помогло бы во многих аспектах
linker
bestxp
Цитата
На счет композера, это просто совместимость с кучей других библиотек, это возможность того что о нем еще узнают и из набора библиотек самого композера

Если я правильно понимаю, то возможность подключать сторонние библиотеки?

Цитата
так же заметил немного ошибочный подход через Gear\core
тут тебе стоитло бы посмотреть и сделать сервис локатор или Depedency Injection контейнер, это очень помогло бы во многих аспектах

Здесь это сделано намеренно. А вот про аспекты по-подробнее smile.gif

_____________
Gear Framework
Gear Framework на Github
Michael
Цитата (linker)
Michael
Без начального слэша это относительный путь, он относителен текущего пространства имён. Поэтому чтобы избежать проблем, всё именование абсолютное, относительно корня \

для use этого не надо. Вот доки :
Цитата
Обратите внимание, что для имен в пространстве имен (абсолютные имена, содержащие разделитель пространств имен, такие как Foo\Bar, в отличие от глобальных имен, которые его не содержат, такие как FooBar) нет необходимости в начальном обратном слеше (\) и его присутствие там не рекомендуется, так как импортируемые имена должны быть абсолютными и не обрабатываются относительно текущего пространства имен.


Цитата (linker)
Я не шибко знаю yii, но я так и не понял про валидацию моделей, у меня есть (в разработке) фильтры параметров в запросах GET/POST

модель представляет набор каких то данных.
набор правил валидации сможет проверить корректный ли текущий набор данных. Твои фильтры GET/POST из какой то другой оперы.

и да, Composer - это почти что стандарт уже, не трать время чтобы с этим бороться.

_____________
There never was a struggle in the soul of a good man that was not hard
bestxp
Цитата (linker @ 18.01.2014 - 11:35)
bestxp
Цитата
На счет композера, это просто совместимость с кучей других библиотек, это возможность того что о нем еще узнают и из набора библиотек самого композера

Если я правильно понимаю, то возможность подключать сторонние библиотеки?

Цитата
так же заметил немного ошибочный подход через Gear\core
тут тебе стоитло бы посмотреть и сделать сервис локатор или Depedency Injection контейнер, это очень помогло бы во многих аспектах

Здесь это сделано намеренно. А вот про аспекты по-подробнее smile.gif

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


например
у тебя есть класс CarDataStorage extends MySql {}
и у него есть методод setConnection(IConnection $connection)

по сути вариантов несколько решений, 1ый ты каждый раз указываешь соединение после инициализации, 2ой ты делаешь статик класс для указания инициализации
третий через Service Locator или Di

суть в том что у тебя есть некий конфиг который говорит что для класса такого-то сделать такие то Injection через конструктор или через сеттер не важно

В худшем варианте развития у тебя будет большой конфиг,
В лучшем можно использовать готовое, но думаю тебе не понравиться xD


Итак профит какой
1 Ты легко покрываешь тестами
2 Ты легко меняешь соеединение или даже части Модели которые являются части конфигурации Какого-то стореджа только поменяв строку в конфиге


В идеале у тебя есть класс рассылки почты, у которого есть менеджер шаблона, менеджер отправки ( smtp, sendmail, записать в бд для стороннего сервиса или отправить через api )

и ты это получаешь уже одной строкой $container->get('mailer') или что-то в этом духе

если тебе для всего приложения вдруг надо сменить настройки коннекта с SMTP на SendMaiil или наоборот, тебе не предетяся лезть в кучу мест и делать правки, ты идешь в одно место и правишь
linker
Michael
Цитата
модель представляет набор каких то данных.
набор правил валидации сможет проверить корректный ли текущий набор данных.

Насколько это имеет смысл? Если я загрузил модель из базы, то имеет ли смысл говорить, что данные там валидные или не валидные?

Цитата
и да, Composer - это почти что стандарт уже, не трать время чтобы с этим бороться.

Нет, вроде не собирался, хочу быть в тренде smile.gif

_____________
Gear Framework
Gear Framework на Github
linker
bestxp
Ну как бы да, через конфиги можно подменить одно на другое, можно в коде это делать в режиме реалтайм. Я пошёл дальше, я вообще вывел из модели понятия о всяких базах данных, connection и прочем. Есть специальные компоненты, а модели через свойство $_owner с ними общаются. Например
// Конфиг приложения
return array
(
'components' => array
(
'user' => array
(
'class' => '\gear\components\GUserComponent',
'connectionName' => 'db',
'dbName' => 'test',
'collectionName' => 'users',
),

'db' => array('class' => '\gear\components\GMySql'),
),
);


// Компонент
class GUserComponent extends GDbComponent implements IFactory
{
public function load()
{
// Для примера
return new \gear\models\GUser(array('owner' => $this));
}
public function update($user)
{
Core::c($this->getConnectionName())->selectCollection($this->getDBName(), $this->getCollectionName())->save($user->props());
}
}


// Модель
class GUser extends \gear\library\GModel
{
// В упрощенном виде
public function __call($name, $args)
{
array_unshift($args, $this)
return call_user_func_array(array($this->getOwner(), $name), $args);
}
}


...
$user = Core::c('user')->load();
$user->login = 'linker';
$user->save();

Заменю ли я компонент user на что-то другое или заменю db на mongodb или sqlite, последние три строчки всё равно будут работать, ну должно работать :)
Единственное, да конфиг может вырасти очень прилично, но у меня есть встроенные возможности по разбивке, когда каждый модуль/компонент/плагин может иметь свои отдельные конфиги в отдельных файлах.

_____________
Gear Framework
Gear Framework на Github
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.