Pull to refresh

Comments 102

Начал читать, дошёл до строчки
Fat-Free состоит из одного файла и весит всего 55KB.

И чуть было не закончил тут же. Мол, что можно втиснуть в такой объём. Какой же это фреймворк. Но пошёл читать дальше. Описание плагинов подняло планку. Подумал, что вполне можно приспособить для дописывания мелкого функционала мелким сайтам, которым не счёл нужным ставить CMS на БД. Увидел требования: 5.3. Нет, к мелким сайтам приспособить не получится.
Не удержался, сунул нос в код. Хороший код, технологичный. Есть чему поучиться. Но в целом рассматривать как фреймворк эту штуку не могу.
в каком то из номеров phpinside было что самый примитивный фреймворк это <?php include_once($_GET['q']);?>
гдето в интернетах я уже описывал типы фреймворков… повторюсь более кратко
разделим фреймворки по размеру на
— громадные zf, symfony 1, yii, кохана
— ядерные фреймворки nicedog, f3, frogcms (внутри очень прикольный фреймворк есть), symfony 2
— нано twitto.org

ядерные фреймворки это unix way, но php разработчики предпочитают windows way — поэтому у php очень слабо развит pear, как следствие большое «дублирование» реализаций

чем больше фреймворк — тем больше приходиться тратить времени на его изучение, он имеет большее количество спорных моментов и больше мест которые могут «не подойти» под конкретный проект (тут валидация лучше, там orm, а в другом mvc удобнее)
55кб можно прочитать за день (внимание: код нужно читать прежде чем использовать)
Зенд, как раз, изначально не является «громадным», это всего лишь набор библиотек, при этом с его мвц можно легко использовать сторонние шаблонизаторы/орм и т.д. Кстати, давно есть желание разбить его на пиар пакеты, может руки дойдут, но уже скорее ко 2ой версии.
Во 2-й версии pear-пакеты, вроде как, будут из коробки. Совсем недавно было довольно интенсивное обсуждение этого в zf-contributors листе.
Выступлю против причисления Kohana к «громадным» ибо поизучав множество фреймворков пришел почти к противоположному выводу — размер Коханы (обычно на выходе это 100-110 небольших мерженых файлов включая заглушки и модули) крайне мал для того функционала, что он дает (причем большую часть этого функционала так или иначе придется подключать к «миниатюрным фреймворкам» в виде плагинов/хелперов/etc).

Хотя тут выше написали, что код хороший — надо глянуть…
Термин «громадный» применительно к Kohana звучит как комплемент :)
Кстати по поводу «прочитать за 1 день» — на понимание (не «чтение») такого кода уйдет не 1 день… Стиль написания, на мой(!) взгляд, ужасен.
да нормально написано, за 1 день действительно можно понять что делает каждый метод и как его использовать
Я же не зря выделил, что это лишь моя точка зрения. Просто я привык к более аккуратно оформленному коду Ko3 и после него читать такой код хотя и возможно, но весьма проблематично… Для меня это как чтение production и development версии jQuery (не настолько, конечно, но что-то в этом роде)…
«php разработчики предпочитают windows way»
А пацаны то и не знают.
Кстати, да. Не зря читали дальше

fatfree-1.3.24.zip (325.8 KB)
В этом архиве кроме фреймворка также размещены плагины, примеры, руководства в pdf и chm.
Ну так да, все аттрибуты полноценного фреймворка, а 55кб — это ядро.
ну да, а размер ядра у «огромного» Yii — 230Kb. Только вот функционал очень даже разнится. экономия на спичках, особенно если с комплилятором использовать.
Ух ты, а что PHP уже компилируется?!
Я думал максимум транслируется в байт-код :)
а писать, судя по примерам, очень даже запарно будет, особенно годика через пол когда вернешься к коду поправить какой-то блок.
добавил в избранное, интересный фреймворк
Очень интересно, но то как выглядит код на нем — не нравится. Хотя минимализм и легкость это и нивелируют. Имеет право на жизнь, спасибо автору статьи и автору самого фрэймворка!
Не уверен о котором коде Вы говорите — о том, что я привел в пример, или Вы примеры на сайте смотрели.
Я привел в пример самый простой и самый примитивный способ!
На самом деле фреймворк очень гибкий. Можно использовать лейауты, можно в несколько движений прикрутить свои, или уже существующие классы, например, для валидации пришедших от пользователя данных.
Тут есть хорошие примеры работающих приложений:
sourceforge.net/projects/fatfree/files/
Конечно же я о Вашем коде в статье. Наверное можео писать код, который и будет мне больше по душе, но блин мне не охота изучать примеры, уж извините, кода в сети много. Много достойных фрэймворков, но… нет сил и времени все изучить.Надеюсь кто-то более терпеливый чем я и полезет изучать код примеров, но мне кода и на работе хватает. В общем охотно верю что можно писать боле красивые кончтрукции...:)
красиво код выглядит на Mojolicous — mojolicious.org
Ищу что-то похожее на PHP, но к сожалению ничего нету
Интересная штуковина, но язык шаблонов, честно говоря — отталкивает.
F3::route('GET /','home');
function home() {
Странно, если требуется PHP 5.3, почему бы не создавать Closure и не работать с ним? Зачем эти уродливые функции в глобальной зоне видимости?
Почитайте пожалуйста дальше. Ниже я привел несколько возможных способов для объявления роутов. А эти функции в глобальной зоне видимости действительно уродливе :) И удерживаюсь от такого стиля. Хотя он имеет право на существование. Например, если Вам нужно в лейаут подгружать разный статичный контент — два роута, одна функция и все готово.
Я не понял почему в случае использования Closure нельзя использовать два роута и одну функцию?
И в способах объявления роутинга нет примера с анонимной функцией.
Смотри п.2 в разделе «Приступаем к работе»
Да, теперь появилась. Это хорошо.
Да, lambda ф-ция смотрелась бы интересней в вашем примере
Так и хочется добавить: «Фреймворк настолько быстрый, что напишет сайт за вас, пока вы только будете думать над его реализацией» :-)

Интересно, но только для маленьких сайтов с простой структурой, иначе логика на 20-30 роутов будет напоминать кашу.

P.S. Ждем фреймворка F5.
Не напоминает :) Серьёзно, всё растаскано по контроллерам :)
UFO just landed and posted this here
И у обоих клиентов одни и теже свои «наборчики» багов :)
Один из главных плюсов фреймворка — это то, что несколько программистов могут одновременно работать над проектом. А когда у каждого свои «наборчики», то кроме вас с ними работать никто не сможет (не захочет).
Какой-то странноватый код у него.
Вопрос, кстати, а если мне нужно будет извлечь не все поля из таблицы комментариев, то как?
Или у меня в таблице комментариев только id юзера, ники в другой таблице, есть методы объединения, или запрос писать придётся?
Вот небольшой пример
$frequentUsers=$user->find('visits>3','userID');

На счет объединения не уверен. Но если нужно установить связи между таблицами — разве что только на уровне БД или писать собственный класс.
Ну конечно, на Ruby такой код пишут уже давно…
Есть объединение. Нечто вроде INNER JOIN
А можно вообще голый запрос писать
> Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
каким это образом?
На счет хотлинкинга — похоже, обычная проверка реферера, я еще не копался в этой части кода.
На счет DoS, в некоторый момент фреймворк проверяет ip пользователя в глобальных блек листах (гляньте тут: www.dnsbl.info/dnsbl-list.php).
Если переменная SPAM не установлена, фреймворк редиректит плохого пользователя на 404 страницу. Если в этой переменной есть адреса, то все плохие пользователи будут редиректиться на эти адреса.
похоже, данные фичи добавили, чтобы фреймворк не казался совсем уж тощим :)
польза крайне сомнительная
Этим должен заниматься nginx, на худой конец апач, но никак не php скрипт.

Не вводите в заблуждение, никакой фреймворк по определению не может защищать от DDoS атак. Быстрая работа всех страниц — это и есть защита.
F3::set('CACHE','apc'); или
F3::set('CACHE','xcache'); или
F3::set('CACHE','folder=tmp/');

После чего кешируем нужную страницу на одну минуту:
F3::route('GET /mypage','mypagefunc',60);
Интересно, зачем он в конце каждого файла пишет "?>" и перенос строки после него
Перенос строки в конце файла это хорошо.
по-моему, лучший — CodeIgniter, мне так понравилась его реализация модели MVC со всякими дополнительными хелперами, хуками, плагинами и т. д., что даже не обращаю теперь внимания на другие фреймворки.
даже не обращаю теперь внимания на другие фреймворки.

А это зря, нужно изучать и смотреть разные решение одних и тех же проблем. Я раньше тоже так думал о CI, но сейчас уже использую Zend.
Есть множество хороших фреймворков. Мне в своё время оч нравился Kohana.
И вот в один прекрасный день, зайдя на их сайт увидел в новостях нечто такого смысла: пожалуйста, кидайте донат, а то проект без этого не сможет развиваться да и за хостинг нужно заплатить.

После этого сразу и безвозвратно переметнулся на ZF.
Я-то свой donate бросил, но не хочется зависеть от щедрости других и осознавать, что в любой момент это прекрасное начинание может умереть.

А ZF, если и умрет, то только вместе с php — а это случится не скоро.
UFO just landed and posted this here
Народ помешался, и Украина тут не при чём. Вот если бы хоть бы кто-то перестал пафосно называть свои поделки фреймворками, а честно признался бы что «я написал кусок говнокода» то хотя бы за честность кто нибудь да плюсанул бы =)
UFO just landed and posted this here
Переход на личности, лишь попытка не признаваться в отсутствии аргументов, увы она говорит за себя сама…

Но коли вы «читали» всё-же «мой сайт» то могли бы и заметить что это «затычка» на бесплатном хостинге для ламеров которые бегают по ссылкам в профилях (обычно на форумах) в поисках чуда

(вирус кстати вставляет хостер, как и заголовки неверной кодировки, и начали они это делать через 4 года после того как я его забросил)
UFO just landed and posted this here
Хорошо, напросились сами. Глянем в любой файл F3 (я уж про название не говорю, но допустим что название с его сокращением навязано маркетологом)

Куча тернарников, никаких пробелов, отсутствие скобок для «однострочных» условий, я так писал в том самом 2004-м году когда впервые свой первый говносайт сделал, дебаг превращается в «квест — догадайся что афтор имел в виду», если это не говнокод, то что тогда говнокод?

А мой уровень вообще не имеет значения, ибо не нужно быть профессором математиком чтоб знать что 2х2 не будет равно 5
столкнулся с проблемами когда приложение написанное с использованием этого фреймворка находиться не в корне сервера, а в поддиректории. Пришлось немного хитрить, а так то довольно неплохой инструмент.
я тут django переписываю на php :) кому интересно — стучите в аску/скайп (особенно если вы знаете как устроены внутренности django.db.models, есть вопросы...)
— я и мой сраный фреймворк [x]
Предлагаю начать сразу с рельсов. Так будет интересней ))))
уже довольно много сделано, к тому же рельсы мне пока не интересны.
Ирония — не значит издеваюсь )))

В общем, удачи в начинаниях…

P.S.… но все равно не понятно, чем питон плох.
P.P.S «рельсы мне пока не интересны» — а вы их пробовали?
Питон всем хорош и очень мне нравится, но пока уровень его знания не позволяет делать что-то серьезное + хочется иметь такой же удобный инструмент и на пыхе.

Рельсы смотрел поверхностно, просто питон с джанго мне больше пришлись по душе )
Я планирую подробнее изучить руби/рельсы, но только после питона/джанго
Время переписки django на php < время изучения питона?

Мне действительно интересно — нафига?

Нет, если спортивный интерес, тогда понятно.
я вот предвидел этот вопрос :)

— потому что работать намнооооого чаще приходится с пыхом, +спортивный интерес.
django на php будет уже не то.
pluf.org смотрели?
Быть может после Ko3, а может и нет, но код F3 просто ужасен в своей читабельности… Хотя бы на пробелах в выражениях с тернарными операторами можно было не экономить?!!!
«Если названия полей формы соответствуют названиям полей таблицы, нет необходимости присваивать каждое значение отдельно.»

— Что удобно — оно понятно… А насколько это безопасно?
Размер фреймворка напомнил об этом:

На настоящий момент времени существуют несколько вирусов длиной 59 байтов. Вот цитата из каталога Игоря Данилова:

Viking.59

В настоящее время данный вирус является мировым рекордсменом среди самых маленьких резидентных файловых вирусов, сохраняющих работоспособность инфицированных программ. Является усовершенствованной модификацией вирусов Dinky, но с использованием пары неплохих приемов.

Сам же Игорь Данилов является автором сверхкоротких вирусов серии Dinky. Существуют Dinky.59, Dinky.56 и… по уверениям самого Данилова — Dinky.52!

drmad.chat.ru/virus1.htm
Как минимум интересная штука это F3.
Меня заинтересовал раздел «Bandwidth Throttling» в описании. Посмотрите, кто что думает, насколько это эффективно?
Защитит от DoS, но вот чем это поможет от DDoS не ясно.
Как по мне стиль кода ужасен, плохо читаем. Порадовало хранение натроек:
if (preg_match(
			'/^(apc)|(memcache)=(.+)|(xcache)|(folder)\=(.+\/)/i',
			F3::$global['CACHE'],$_match))

Интерестный фреймворк.
Но так и не понял как передать значение переменных в шаблон, без использования их шаблонизатора.

В мануале написано:
«I Don't Need the Template Engine. PHP is Good Enough!
No problem. Use of the template engine is entirely optional. Just abstain from using the F3::resolve and F3::serve methods.»

Устанавливаю… ничего…

index.php:
$c = array(23,555,7);
// или так
F3::set('c',array(1,2,3,4));
echo( F3::serve('_temp/q.php') );

_temp/q.php:
<?php
print_r( $c );
Подключайте темплейт обычным способом, без F3::serve();
Т.е. через обычные include/require?
Проверил, так работает.
Но это немного мимо F3…
Говорите что хотите, но eval в коде меня напрягает. как и большое количество регулярок, да в кипе с preg_replace_callback это может привести к падениям в pcre, с чем я много раз встречался (камень в сторону Quicky (: ). Всё можно значительно упростить используя анонимные функции, раз уж требования не менее 5.3. А в целом — свежо.
«Fat-Free чем-то похож на известный Ruby-фреймворк Sintara.» — опечатка, всё же Sinatra.
Шаблонизатор стремный, лучше уж native php
А что за интересный такой синтаксис?
F3::route('GET /',(:yourfile));
Остряк! :))
Я конкретно про "(:yourfile)". Если этим подразумевается «подставьте своё имя файла» — тогда я впервые вижу такой способ. Пахнет SQL-placeholder'ами :)))
Довольно неплохой фреймворк. Местами проскакивают «сомнительные» конструкции, но в целом есть чему поучиться. Спасибо
Спасибо вам! Давным давно прочитал вашу статью и вот заканчиваю довольно крупный проект на этом фреймворке. Радует он почти всем, есть небольшие косяки, но автор пообещал исправить их в версии 2.0 :) Вообще, готов ответить на вопросы по поводу этого фреймворка. Также не стесняйтесь писать автору — он охотно отвечает :)
Поделитесь ссылкой на свой проект :)
Как только закончим — кину в личку)
Не закончили ещё? =)
Интересно было бы тоже посмотреть. Ну и вообще, остались верны фреймворку, или на что-то ушли?
Поддерживаю вопрос.
А то лично я ушел на Silex :)
Последний проект я делал на собственной связке MVC. Свой велосипед ближе к телу. :) на вопрос ответил ниже
Закончил, но пока мы его не запустили :)
В общем и целом — фреймворк понравился, есть косяки, но я отсылал багрепорты и автор их правил, сейчас на днях он выпускает вторую версию — вот тут уже всё станет понятно)
Вещь интересная, но:
зашел на сайт фреймворка, и увидел, что последняя версия выыпущена в 2010 году.
Забросили похоже, и в связи с этим его использование мне кажется сомнительным в плане развития, чтоли.
Захожу на сайт: Updated Sunday, 23 January 2011
Захожу в репозиторий, где код хранится: Last Update 9 hours ago
В репозитории лежит версия 2.0, которая сейчас активно девелопится.
Only those users with full accounts are able to leave comments. Log in, please.