Pull to refresh

Comments 84

Спасибо за хороший перевод.
CakePHP очень заманчив и во многом прост в использовании. Опять таки - нельзя не заметить что работать под линуксом с ним проще :) русский будет в UTF8, а у win в cp1251.
В ЖЖ видела комьюнити community.livejournal.com/ru_cakephp вот только хорошего блога по данной теме не хватает.
Спасибо.

>русский будет в UTF8, а у win в cp1251
Вы наверно имеете ввиду генератор кода Bake?
Я работаю в windows, но все делаю в UTF-8. а в чем проблема собственно?
Я пользуюсь CodeIgniter, пробовал поработать с CakePHP, но отсутствие нормального мануала делало работу с frameworkom просто ужасной! Многого тупо не понимал :(
ну поначалу тоже ощутил такое. потом открыл для себя bakery где решены все типовые проблемы, с которыми я столкнулся. плюс пошарился в ядре, кастомизировал ручками и вообще все стало ясно (хотя это путь не для всех, канеш, но CakePHP действительно написан понятно, так что подправить там чтото не составляет труда)
А ZendFramework немоден? Правда там скаффолдинга нет и ORM...
Некоторые считают, что ZendFramework несколько тяжеловат...
В каком плане «тяжеловат»? Объем, сложность освоения, установки? Имхо, его установить только немного проблематично, а остальное вполне нормально. По крайней мере освоить его не особо сложно. Да и объем не так велик.
в зенде непонятно зачем сделали уж очень большой overflow. Там есть классы, которые наследуют 6-7 объектов. Каждый класс - в отдельном файле. В итоге Инициализация 1 класса требует загрузки 6 файлов. И инициализиции такой кучки классов. Возможно в PHP6 или когда-нибудь там это не будет вызывать таких больших таймов, но сейчас - уж увольте. django! :))))))))))))
Да, согласен. Об этой проблеме уже много велось разговоров. Предлагались методы решения (если мне не изменяет память, на хабре в том числе), но все это конечно «тухловато»…
django! python! :))))))))))))))))
А кэширование опкодов помогает?
если бы этого не было - использовать такие фреймворки вообще было бы нереально. Но опкоды - не панацея, проверка времени изменения сотни файлов требует времени, и не мало.
Я при разглядывании Зенда не мог избавится от впечатления что это не фреймворк, а "набор плюшек". Нету в нем целостности, просто набор классов (местами очень полезных, но все таки).
Спасибо за перевод. Я для себя выбрал CodeIgniter.
интересно, но для меня ZF решает.
Проще чем CI помоему ничего нет, жаль конечно что он GET режет по умолчанию, но я както приспособился и обхожусь POST. Единственное чего не хватает - это рускоязычного форума по CI.
Кхм. А что значит режет (я не работал с CI, если что)?
Очевидно, это значит, что методом GET передавать параметры при использовании CI не получится.
Может быть я что-то недопонял или Вы не совсем точно выразились, но фраза "методом GET передавать параметры не получится" должна ставить большой и жирный крест на средстве для web-разработок.
ниже объяснили. Никаких крестов! Просто вы не будете иметь доступа к $_GET. Точнее, $_GET не будет, да в принципе он и не нужен там.
вообщем-то не ставит это крест, потому что параметры в контроллеры обычно передаются как часть пути - http://example.com/controller/action/par…, CI прогоняет путь через mod_rewrite и формирует запрос к контроллеру, это красивее же.
Если в меру, то красивее. GET тоже в меру совсем не плох.
Только решать, как будут выглядеть ссылки должен разработчик каждого конкретного сайта. Это мое личное имхо.
Вообще-то CI с GET работае прекрасно, надо всего лишь одну строчку в настройках фрэмворка модифицировать, впрочем все описано в мануале.
Получится. Просто эту опцию нужно включить.
Ну нельзя обратится к массиву GET. Вот из описания строчка:
Destroys the global GET array. Since CodeIgniter does not utilize GET strings, there is no reason to allow it.
UFO just landed and posted this here
$config['enable_query_strings'] = TRUE;
Отключает резалку GET
Не совсем, это отключает mod_rewrite и позволяет пользоваться get. Но для того, чтобы работало и то, и другое нужно делаьт хак, описание коего есть на форуме.
Это не отключает mod_rewrite. Я думаю не надо объяснять где он включается и выключается.
Эта настройка еще разрешает дополнительно использоватеть GET параметры для определения контроллера и экшена.
У меня работает mod_rewrite + урлы вида /controller/action/id?a=1&b=2 именно при включении этого параметра.
Ты не прав не пугай народ, достаточно изменить лишь эту настройку и гет переменные заработают в полном объеме
http://codeigniter.com/forums/viewthread/47309/P15/#239306 Да, Вы получается правы. Есть обходной путь для использования $_GET . На то время когда я начинал изучать СodeIgniter на форуме был описан только способ с помощью хака.
Для CakePHP существует русский мануал для версии 1.1 - http://www.cake-php.ru Также готовится к переводу версия 1.2
Я бы перевел "роутинг" как "маршрутизация" ;)
UFO just landed and posted this here
"Это делает процесс кодинга быстрым, но без изучения ядра, вы просто будете сами себе задавать вопрос “что сейчас происходит?"
Это точно, начал разбраться в Cake и застрял :(

Документация у Cake самое слабое место, имхо. Слишком большой шаг от простейших примеров в туториалах до документации API.

Всякие элементарные примеры типа 1 M, 1 V, 1C понятно как делать, а вот как реализовать что-то более-менее серьезное, не впихивая и не дублируя весь код для каждой страницы в три класса, а, например реализовав простейшую блочную модель, совсем не понятно :( Может кто-нибудь подскажет, где можно почитать про принципы и последовательности вызывов функций происходящих при запросе "controller/action/params" и приводящих к выводу в браузер? Когда С вызывает V, как можно перехватить вывод V вместо "stdout" в строку и/или файл, как получить в одном С или V результат действий другого C или V и т. п.

Или придется весь код пошагово под дебагером выполнять, чтобы разобраться?
UFO just landed and posted this here
Из оригинала:
They take a much simpler approach to application development than the complexity that is something like Symfony.
UFO just landed and posted this here
Имелось ввиду, что автор просто "ниасилил" Symfony :)
UFO just landed and posted this here
Наверное имелось ввиду, что в Симфони трудный старт. Нужно недельку посидеть, чтоб прочитать доки, просмотреть фишки, оценить, скачать сендбокс, потом установить через PEAR-инсталлер, потом построить схему, потом построить модель, потом вставить схему в БД, потом создать приложение, заняться скаффолдингом.

Но лично я не жалуюсь, что перешел на Симфони с Сигала, миновав легковесов CodeIgnater и ПирожокРНР
UFO just landed and posted this here
UFO just landed and posted this here
К преимуществам 1.2 можно отнести наличие поддержки основых способов кэширования: простое файловое, memcached и т.д.
Простите, у меня одного в релизах Cake написано no releases???
Не будет у этих проектов будущего, пока они не откажутся от поддержки PHP4.
обратная совместимость, если я не ошибаюсь, в очень редких случаях работает во вред проекту...
В случае PHP 4 и 5 - во вред, потому что в PHP5 OOP функционал на порядок выше, и отказываться от него - глупость.
Не всегда есть возможность выбора хостера, дали на 4, что хочешь то и делай, и тут при выборе FW и/или CMS поддержка PHP 4 будет стоять на первом месте
UFO just landed and posted this here
UFO just landed and posted this here
кажется, в CakePHP 2.0 обещали отказаться от поддержки PHP4
Переводчик, убей себя апстену, пожалуйста.

«о преимуществах и недостатках двух популярный PHP фреймворков», «сопоставляю две эти платформы друг против друга», «а так же полные провалы», «который направляет данные из модели, чтобы получить представление», «но без изучения ядра, вы просто будете сами себе задавать вопрос», «Объек валидации», «называть ваши фалы», «И всеже Smarty», «как в CodeIgniter так и в CakePHP», «CodeIgniter, по моему усмотрению, тут безоговорочно выигрывает», «Очень помогает команд разработчиков», «А также довольно активная Google-группа», «И это достоинство более явно раскроет себя от версии к версии».

Это, конечно, полнейший 3.14. Фтопку такой текст, с продемонстрированным знанием как бы родного типа языка, с объеками и фалами. Получили настоящее представление, спасибо.
не редактора денег не хватило
На бесплатный спелл-чекер в онлайне тоже? И текст комментариев бесплатно на опечатки не вычитать?
сделай свой перевод
чтобы тебе понравилось.
«Чтобы мне понравилось», я перевожу другие тексты. Это не мешает мне давать оценку чужой работе. Здесь очевидно нежелание автора хотя бы минимально причёсать текст после замены английских слов и оборотов на русские.

Поправить опечатки и попросить кого-то из знакомых посмотреть на текст — это не такая большая работа. И если это не было сделано — то вешать материал на публичный ресурс с тысячами читателей значит не уважать ни их, ни себя. И неизбежный риск критический комментарий как минимум от одного из читателей.
согласен :)
я просто с другой стороны смотрю: хорошо что перевод есть хоть такой
Setti ты не прав, ты же можешь быть добрее и лучше.
По поводу кейка...использовал его достаточно долго..что не понравилось достаточно сильно:

Нет i18n из коробки, но оно вроде как будет в 1.2
Нет нормального компонента для табличного вывода данных..тот же пейджинг и прочие рюшечки из коробки, но оно вроде как будет в 1.2
Те совсем тривиальный механизм создания части администрирования сайта с помощью спецроутинга
Давно пора убрать уже оттуда PHP4 зависимой код
Документация не очень хорошем состоянии

А остальном хороший фреймворк. Хотя и смотрю больше в сторону питона/джанги
В принципе 1.2 можно использовать уже сейчас.
Механизм администрирования можно вынести в отдельный плагин; своя маршрутизация для админа - это скорее всего некий костыль для мелких приложений.
К сожалению, связи в CakePHP не всегда можно использовать - когда мне потребовалась выборка по связи многие-ко-многим, CakePHP выбирал данные сначала из первой таблицы, а затем из связаной таблицы выбирал по связи соотвествующие строки. А ведь это можно было бы сделать одним запросом!
Не понимаю все эти ORM. Что может быть приятнее, чем написание в чистом виде SQL запроса ? :)
Я сейчас работаю в большом проекте, который писали люди, не знающие, что такое ORM. Да и OOP. И когда я вижу в разных файлах, в разных функциях одинаковый, одинаково неработающий SQL - мне хочеться поломать им руки.
Что мешает таким людям писать неработающий ORM ?
ORM не даст возможности написать что-то вроде "INSER INTO" или "SET a='{$_POST['text']}'". Второе - уже дыра
По первому примеру "INSER INTO" - запрос явно не выполняли вообще. С таким же успехом можно написать $this->db->selecttttt('title')

По второму - если не проверять, отправленные пользователем значения, проблемы (дыры) будут независимо от ORM.
Кроме того, CI может выполнять автоматический "эскейпинг" обычных SQL запросов.
"Не понимаю все эти ORM. Что может быть приятнее, чем написание в чистом виде SQL запроса ? :)" - черт возьми и ты прав!!! Так и есть, ведь по сути SQL - это уже обертка над БД , а ORM - еще одна обертка над SQL, вопрос зачем так все усложнять???
я таки думаю вы не уловили смысл ORM, замена SQL это только маленькая часть его
IMHO думается мне что дело тут не в понимании, а в том, что для кого как удобнее... кому-то приятно писать SQL, а кто-то восходит до абстракций ORM. Да и по большому счету ORM - всего лишь технология программирования, связывающая БД с концепциями ООП и существует на ряду с другими методиками и технологиями. А потому использование или неиспользование ORM сугубо личное дело программиста.
Как показала практика, затраты времени для работы с данными уменьшаются на порядок.

И если встанет задача перейти на другую систему БД, то это можно сделать с минимальными усилиями. :)
CakePHP заточен под mysql, и на другую СУБД перейти толково просто не получится. Половина возможностей - для компенсации отсутствия ссылочной целостности и триггеров, этакая надстройка над mysql.
$this->Post->Comment->findAllByPostId($id)

как вы добились этого?
что-то у меня не получается
Нужен совет специалистов.
О себе. Я менеджер - разработчик - бизнес аналитик, не знаю, кто больше, но точно не в сторону программиста...

Знаю meta-CMS DJEM (к сожалению, платная и дорогая, 22 тыс. рублей+ за лицензию) и CMF ModX (к сожалению, там не всё так круто, как нам хочется). Хочу изучить ещё 1 CMF, выбор между Symfony, Django и CodeIgniter. CakePHP почему-то не нравится. Не хочу, не буду, уберите - это на подсознательном уровне, наверное. :)

Цель 1, "создавать современные сложные и нестандартные сайты/сервисы", вот требования к платформе:
- возможность создать серьёзное решение, выдерживающее высокую нагрузку (трафикообменники, например)
- применение современных технологий (Mootools и Ext JS имею ввиду, ну, и вообще, AJAX везде, где это надо)
- быстрота сборки и возможность сборки не погружаясь в сложные процессы ядра и того, как это всё работает, важен результат и время разработки чем меньше, тем лучше (с тем же качеством).
- удобство управления (админка), то есть не просто а-ля добавить в таблицу/удалить из таблицы, таблицами только программеры мыслят, а для остальных нужна ЧПА (мой термин, только что придумал, человеко-понятная админка :) ).
- разделение прав доступа, чтобы можно было разбить по группам и дать привязку групп пользователей к группам документов (наверное, лучше сказать, объектов) и действий над ними.
- большое количество расширений (либо возможность их написания), позволяющих быстро создавать почтовые формы, генерировать многоуровневые менюшки, вообщем, вплоть до корзины заказов и Интернет-магазина.

Цель 2: сделать meta-CMS, копию DJEM, вот описание того, как я вижу идеальную для нашего бизнеса meta-CMS:

В DJEM мне ОЧЕНЬ нравится такая штука, как контент-шаблоны (КШ) и дизайн-шаблоны (ДШ). Первые определяют поля документа (заголовок, вступление, основная часть, теги, например), а в ДШ хранятся всем привычные шаблоны, где можно вызвать любой элемент по его названию (текущего документа, родителя. Можно установить типы контента для разных разделов в дереве страниц и начать заполнение. То есть у нас есть типы элементов ввода (поле, список, поле с WHYIWYG-редактором, чекбоксы, дата, прочее), мы из этого делаем КШ и к каждой странице привязываем по одному КШ. Потом заполняем это и в ДШ выводим поля из КШ. Есть ещё дефолтный КШ и ДШ, то есть в списке выбирается какой КШ и ДШ будет у поддокументов, по умолчанию он равен КШ и ДШ текущего документа.
Вот такой принцип я нашёл только в 2 системах, одна стоит дорого, вторая несколько недоделана, медленно работает и не умеет всего того, что надо. + в ModX есть некоторые ошибки проектирования БД (как минимум 2). Нужна такая система, которая позволила бы сделать так, как я написал.
Написать её наверное можно на любой CMF, но где-то это будет удобно, где-то придётся извращаться, вы лучше меня знаете, наверное.

Скажите, то, что я написал (2 цель) реально сделать через те CMF, которые я перечислил?.. Какую лучше изучить?..

То есть мы хотим сделать некоторый прототип (meta-CMS как DJEM, только бесплатную и на PHP/Питоне, вообщем) и его использовать для изготовления сайтов, которые нам заказывают. Или выгоднее пока сидеть на ModX и ждать новой версии, смирившись, что она работает медленнее, чем хочется и имеет более скромные возможности, чем нужно?

Спасибо за ответы. Обращаюсь я вообщем-то к программерам. Извините, если что-то понимаю меньше, чем вы, но прошу больно не бить, у меня немного другая работа, моя цель - как можно быстрее делать сайты, чуть сложнее типовых + иметь некоторый инструмент для нетиповых сайтов.

Вопрос к юристам, если они тут есть. Созданную на основе CMF систему можно продавать с указанием того, на чём это сделано? Это не будет нарушать лицензии или всё равно будет?
СРОЧНО НАДО КУПИТЬ ЦМС ДЖЕМ!!!!111 :)
Тогда юристы будут довольно потирать потные ручки, а на лице их будет широкая ухмылка!
Разрабы зато все до единого из окон повыпрыгивают ;)
(задумчиво) Или наоборот… повпрыгивают в окна, чтобы хоть еще разик поработать с системой :)
Sign up to leave a comment.

Articles