У меня всегда имеется стремление изучать что-то новое, то, что будет интересно. Этому так же способствует желания выполнять рутинную роботу. Что же, решил посмотреть в сторону MVC фрэймворков для PHP. Насобирал информацию, нашёл следующие Symphony-project (www.symfony-project.com), CakePHP (cakephp.org), envos (envos.org)
Почему выбрал CakePHP – скорее потому, что работает на PHP4.
Итак, приступим. Наверное, начну с небольшого примера, сразу со скаффолдинга – фишки, из-за которой очень многие ведуться на рельсы (Ruby on Rails), фишки, из-за которой «возможно создать блог-движок на РоР за 15 минут». Что же, теперь и для PHP есть “MVC Framework for Rapid Development”. Насколько он rapid – не скажу, опыта применения в проектах нет.
1. Скачиваем фрэймворк с www.CakePHP.com
2. Распаковываем куда-то в www-root веб-сервера, например в папку cakephp
3. Создаём базу данных и создаём таблицу, к примеру таблицу мемберов:
CREATE TABLE members (
id int not null auto_increment primary key,
username varchar(20) not null,
pass varchar(20) not null,
email varchar(40) not null,
fullname varchar(60) not null,
about text not null, education text not null );
4. в папке app/models cоздаём файл member.php
<[?]php var $name = 'Member';
}
?>
5. в папке app/controllers/ cоздаём файл members_controller.php <[?]php class MembersController extends AppController {
var $name='Members';
var $scaffold;
}
?>
6. Всё, осталось поменять настройки доступа к базе данных в файле app/config/database.php
7. В броузере набираем http://localhost/cakephp/members/ и имеем возможность работать с базой через веб-интерфейс (добавлять, просматривать, редактировать, удалять записи). Понятно, что использовать скаффолдинг в реальных проектах никто не будет, но для того, чтобы быстро создать каркас – самое решение. Тем более, что в классе модели можно описать связи с другими таблицами, валидацию данных и прочее. Но это уже следующие шаги.
По поводу скорости разработки – моё мнение, что для небольших проектов использование малоэффективно. Уверен на 100%, что 30-часовой проект я быстрее сделаю, используя свои наработки (classes + smarty as template engine), чем разрабатывая на кейке или другом фреймворке.
Кстати, недавно на developers.org.ua нашёл линк сравнения Рельсов и Джанго (MVC Framework для Python) - с приведенным временем разработки небольшого приложения. Вывод такой, что всё развно большую часть времени тратиться на проработку представления (View-part), и как показывает опыт, наиболее рутинная часть разработки.
Какие методики используют мемберы в своей разработке? Поделитесь опытом.



ноября 25, 2006 в 5:19 pm
работаем над фреймворком "под себя"
сейчас вся разработка руками, используя готовые классы
ноября 26, 2006 в 12:11 pm
Symphony это довольно монстройдная система заточеная под групповую разработку для больших проектов.Типа Рельсы для ПХП.
Включает ORM Propel, класы доступа генерятся автоматом по заданной схеме.
Валидация довольно просто конфигурируется.Включая валидацию регекспами.
Довольно хорошая отладка, есть панель управления заменяющая командную строку.
Впечатление от чтения документации такое что ее тоже писали под впечатлением документации Рельс
Писать есть смысл только что-то большое.
ноября 26, 2006 в 1:26 pm
К фреймворкам руки еще недошли.
Пока только свои (или чужие) классы + Сматри
Поглядываю в сторону кейка.
Конечно еще хотелось бы видеть гдето фреймворк для View. По иронии сутьбы когдато смотрел сайт такого фреймворка, все нравилось но линк потерял
ноября 26, 2006 в 1:26 pm
Хотя такой генератор кода давно существую, называеть он "Индусы". Садиться за компы N Индусов и они с скоростью X KLOC в час генерят код приложения с Y багов на KLOC.)
Недавно наткнулся на аналогичную штуку, для Ява. По словам в about на первой страничке : создаешь меппинг для Hibernate (1 xml файл, который описывает как БД меппиться на POJO (Plain Old Java Object)), а он генерит веб-приложение (базу, спринг bean.xml, POJO, JSP). Такой сгенеренный апп, по словам должен поддерживать CRUD (Create Read Update Delete) для доменной модели.
Такая себе разработка от данных.)
Интересно было бы оценить эффективность интерфейса полученного таким образом приложения. Думаю, Раскин смотрит на все это и переворачиваеться в гробу.
ноября 27, 2006 в 12:52 pm
Когда решил переходить на фреймворк тоже пересмотрел несколько вариантов. Смотрел те что указал Glad + нашел еще Prado - www.pradosoft.com.
Остановился на Symfony - было много отзывов про отлмчную документацию по нему, какую-то схожесть с руби он рейлз(чем я сам не пользовался, но много наслышал хорошего %)).
Также очень порадовала вот такая вот новость http://www.symfony-project.com/weblog/2006/10/28/yahoo-bookmarks-uses-symfony.html, что добавило мне уверенности в правильном выборе
ноября 27, 2006 в 1:07 pm
Я смотрю, прадо - евент-драйверн фреймворк - попытка написать АСП.нет под пхп. Да и весит он много, и файлов много. Врядли жить будет
ноября 27, 2006 в 4:49 pm
Решил кинуть ссылку на подобное для Ява, мож кому будет интересно. http://www.trailsframework.org/Very+Short+Overview+Of+Trails
ноября 29, 2006 в 4:49 pm
пробельчег
Чайник: Яжеговарилпробелнеработает!!!
Программист: Пиши_через_подчеркивание.
Программист 1С: ГлавноеЧтобыШифтРаботал!
Программист Delphi: Не.Шифт.А.Точка!
Программист С++: Ламеры->Млин->Всему->Учить->Надо! (как вариант "пробел\x20не\x20работет")
Линуксоид: даужнуувасипроблемы
Программист Lisp: (да(эт(вообще)старая(тема)))
Программист Х++: doInsertSpase(Яжеговарилпробелнеработает!!! -(,Я,же,говарил,пробел,не,работает!!! -();
Программист PHP: $$Проблемы$чисто$не$пацанские$у$вас;
Программист VB: &Стариков&не&забывайте
Верстальщик html: Нынчедругиетенденции
Программист Perl: print join("\x20",unpack("A1A2A7A3A6A2A*","Яжеговорилчтопробелнеработает"));
Блондинка: КрУТымПАрНЯмпрОбеЛНенУЖен!!!
Крашеная блондинка: ВотПРОБЕЛтакПРОБЕЛнадоПРОБЕЛ
Программист .NET:
class пробел ()
{
public void ненужен()
{
Console.WriteLine("А"+"и"+"правда"+"нафих"+"он??");
}
}
августа 4, 2007 в 6:02 pm
пример небольшого сайта на cakephp и jquery. - http://wdpro.ru/pages/about
августа 5, 2007 в 4:47 am
особо ничего
но если бы ты небольшую статью написал о своём опыте - мы бы это оценили и обсудили! давай дерзай
августа 6, 2007 в 8:50 am
Есть еще неплохой фреймворк CodeIgniter (http://codeigniter.com/). Подходит для небольших и средних проектов, достаточно легкий, в паре с РНР-оптимизатором по производительности вплотную подходит к Питонам.
августа 8, 2007 в 1:28 am
В CodeIgniter что хорошо - это низкий порог вхождения. Довольно быстро (несколько часов) можно разобратся что к чему...
декабря 19, 2007 в 6:01 pm
Сам перехожу на Cake, вот только доков не хватает, так что жду с нетерпением новых постов о Cake. И у себя на блоге тоже скоро начну эту тему.