Комментарии 58
Зачем?
-13
Зачем?
-14
Интересная штука, как-нибудь попробую в действии.
-4
Чтобы прочитать массив роутинга нужно владеть настоящим талантом разработчика.
+29
реализовывать приложения так, как если бы вы делали это в десктопном программировании (не надо пытаться представить это прям сейчас и тут же критиковать, дождитесь пока не увидите это своими глазами, и поймёте, что я имел в виду)
Прочитал статью, так и не понял что вы имели в виду…
Императивы веб-программирования кардинально отличаются от десктопного, и вы ввели меня в заблуждение своим утверждением.
Впрочем, что касается самого фреймворка — одобряю минимализм.
+4
Я так понял, об этом речь пойдёт в последующих статьях.
+1
Веб-программирование действительно отличается от десктопного. Конкретно в статье имеется в виду программирование веб-форм, подобно тому, как это происходит в ASP.NET (система контролов, каждый контрол — отдельный объект, подробнее тут). Также нечто похожее есть в Prado Framework.
+1
ASP.NET — если мне не изменяет память, не десктопное программирование).
+1
Десктопное просто неудачный термин в статье ))
+1
Декларативный UI? аля QML, DFM..?
0
Скорее обычные XHTML шаблоны со спец. тэгами. Например:
<div>
<textbox id="name" maxlength="100" readonly="1" />
<div>
0
Насколько я помню, это касается управляющих элементов и элементов форм. Как аналогия формы в Zend через ZendForms.
Только фреймворк еще и постоянно мониторит состояние элемента (аля asp) + элементы задаются не в php, а в темплейтах.
Таким образом работа с элементами больше похожа на подход Delphi и иже с ним.
Только фреймворк еще и постоянно мониторит состояние элемента (аля asp) + элементы задаются не в php, а в темплейтах.
Таким образом работа с элементами больше похожа на подход Delphi и иже с ним.
+1
+1
Сразу бросилось в глаза
что автоматически мое подсознание захотело изменить на
Есть над чем работать ;)
Скоро будет больше сводобного времени — форкну и свяжусь с Вами. Я не против поучавствовать в разработке open-source ;)
Желаю удачи в развитии.
if (isset($config['customLogMethod']) && $config['customLogMethod'])
что автоматически мое подсознание захотело изменить на
if (isset($config['customLogMethod']) && is_callable($config['customLogMethod']))
Есть над чем работать ;)
Скоро будет больше сводобного времени — форкну и свяжусь с Вами. Я не против поучавствовать в разработке open-source ;)
Желаю удачи в развитии.
0
Тогда хотя-бы
!empty
.+1
Не хочу вас снова расстраивать, но empty тоже не подходит. Второе выражение условия (&& $config['customLogMethod']) это по сути преобразование к булевому типу, что работает несколько иначе по сравнению с empty. См. подробнее тут.
-1
Долгое время пользовался code.google.com/p/green-framework/ возможно есть интересные идеи?..
0
Примеры для роутинга, по крайней мере в статье, чудовищны. В документации стоит что-нибудь попроще показать.
+7
На первый взгляд выглядит почему-то как библиотека для роутинга, но не как фреймворк. Ведь файл index.php мы пишем сами при создании приложения?
И если метода не существует, то 404 мы не получим?
И если метода не существует, то 404 мы не получим?
+1
Я не буду спорить насчет вашего опыта. Сделали — молодцы. Но внимательно, очень внимательно прочтите следующее.
call_user_func_array :
ссылка ...
call_user_func_array :
This function is relatively slow (as of PHP 5.3.3) and if you are calling a method with a known number of parameters it is much faster to call it this way:
$class->{$method}($param1, $param2);
ссылка ...
0
Насчёт статьи скажу что презентация подкачала. Когда я читал про PHP Slim и F3 было сразу всё понятно и ясно, всё просто и чётко. В вашем случае, к сожалению, я не въехал — т.е. нужно скачивать, открывать IDE и начинать разбираться.
А роутинг, ох уж этот роутинг, это адЪ для моих глаз — понять что там происходит с ходу сложно (я работаю с Yii — там тоже регулярки, но гораздо проще разобраться), тот же PHP Slim тоже крайне прост в этом плане.
Пока писал комент — побегал ещё немного по коду. Выглядет конечно ничего, местами интересно. Но представить как оно легко и изящьно позволит мне написать небольшой проект с парой десятков динамичных страниц я не смог — получилась какая-то каша.
А роутинг, ох уж этот роутинг, это адЪ для моих глаз — понять что там происходит с ходу сложно (я работаю с Yii — там тоже регулярки, но гораздо проще разобраться), тот же PHP Slim тоже крайне прост в этом плане.
Пока писал комент — побегал ещё немного по коду. Выглядет конечно ничего, местами интересно. Но представить как оно легко и изящьно позволит мне написать небольшой проект с парой десятков динамичных страниц я не смог — получилась какая-то каша.
+3
Так..., роутинг раскрыт неплохо (сам использую точно такой же принцип в своём фреймворке), а вот работа с событиями (нет, не на стороне сервера, это банально просто, а привязка к событиям клиента) вообще есть?
0
Посмотрел в репу, просто глаза наткнулись…
Возврат значения по ссылке — неправильно. Для установки значения есть метод offsetSet.
В целом метод можно сократить до
Избавившись тем самым от ненужной инициализации.
public function &offsetGet($var)
{
if (!isset($this->config[$var])) $this->config[$var] = null;
return $this->config[$var];
}
Возврат значения по ссылке — неправильно. Для установки значения есть метод offsetSet.
В целом метод можно сократить до
return isset( $this->config[$var] ) ? $this->config[$var] : null;
Избавившись тем самым от ненужной инициализации.
0
А как Вы по ссылке возвращаете null? :)
0
Не всё так просто как кажется. Ссылка тут для обеспечения рекурсивного array access (только для версии php от 5.3.4 и выше). Само по себе такое решение есть костыль, который наконец-то устранили в php 5.4
Вот это if (!isset($this->config[$var])) $this->config[$var] = null; нужно для того чтобы рекурсивный array access правильно работал в строгом режиме.
Вот это if (!isset($this->config[$var])) $this->config[$var] = null; нужно для того чтобы рекурсивный array access правильно работал в строгом режиме.
0
Никогда особо не интересовался микрофреймворками. После этой статьи наверное и не заинтересуюсь. Показанные примеры выглядят не сильно лучше процедурной лапши (ИМХО), вся работа идет через один класс ядра…
Ну а роутинг конечно — врагу не пожелаешь. Динамически метод контроллера, я так понимаю, нельзя определять, только хардкор в маппинге? Насколько же удобнее работать через отдельный класс Route, в котором есть еще и фильтры, дефолтные значения и т.д. Кстати, а в Aleph можно хотя бы анонимную функцию повесить на обработку роутинга? Это если мы говорим про возможности PHP5.3.
Ну а роутинг конечно — врагу не пожелаешь. Динамически метод контроллера, я так понимаю, нельзя определять, только хардкор в маппинге? Насколько же удобнее работать через отдельный класс Route, в котором есть еще и фильтры, дефолтные значения и т.д. Кстати, а в Aleph можно хотя бы анонимную функцию повесить на обработку роутинга? Это если мы говорим про возможности PHP5.3.
+2
Микрофреймворки всегда интересны, вот и мой фреймворк — github.com/AntonShevchuk/Bluz
В скором времени опубликую на хабре :)
В скором времени опубликую на хабре :)
0
Aleph, Bluz, Yii,… Скажите, где люди берут ТАКИЕ имена своим проектам…
+2
Написал человек под ником boodda :)
+3
Хорошие имена вообще-то. Короткие и легко запоминающиеся.
0
Сам фреймворк еще толком не посмотрел, но меня просто убило, когда открыл файл aleph.php и увидел, что в нем 3000 строк и черт знает сколько классов.
Такие вещи меня сразу отпугивают — в таком коде трудно ориентироваться и поддерживать его. Пожалуй, любая книга по написанию хорошего кода или рефакторингу рекомендует первым делом сократить размер (длину) файлов, классов, методов и не забывать про принцип единой ответственности.
Если Вы хотели минимизировать количество подключений в проекте, то, как мне кажется, это глупо — экономия на спичках, других сколько-нибудь разумных причин для такого решения я вообще не вижу.
Такие вещи меня сразу отпугивают — в таком коде трудно ориентироваться и поддерживать его. Пожалуй, любая книга по написанию хорошего кода или рефакторингу рекомендует первым делом сократить размер (длину) файлов, классов, методов и не забывать про принцип единой ответственности.
Если Вы хотели минимизировать количество подключений в проекте, то, как мне кажется, это глупо — экономия на спичках, других сколько-нибудь разумных причин для такого решения я вообще не вижу.
0
Там 7 классов и один интерфейс. Все эти классы обязательны для подключения. Запихнул я их в один класс не из-за увеличения производительности, а из за удобства масштабирования. Если все классы ядра лежат в одном файле, то можно создавать любую структуру папок сайта не боясь испортить пути к обязательным подключаемым классам. А все другие классы (которые будут позже) подключать вообще не требуется, фрэймворк их сам подключит где-бы они не лежали.
0
НЛО прилетело и опубликовало эту надпись здесь
'/rom2dec/#x|(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])#' => 'Aleph\Demo\Transform->rom2dec'
REALY???
REALY???
+3
прошло три года и ни один ресурс уже не открывается.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Aleph PHP Framework