Должен ли кто-то, у кого нет опыта работы с PHP, использовать такие фреймворки, как CakePHP или Symfony?

У меня есть простой сайт для разработки, и я хотел бы изучать PHP на ходу. Я хочу, чтобы сайт был безопасным, масштабируемым и простым в обслуживании. Должен ли я изучать фреймворк и PHP одновременно? Если я буду строить из фреймворка, в игре будет много незнакомого кода. Вы бы сказали, что это увеличивает риски безопасности?


person Community    schedule 16.08.2010    source источник
comment
См. эту ветку о различиях между CakePHP и Symfony: stackoverflow.com/questions/1242060/symfony-vs-cakephp   -  person Ben Walther    schedule 16.08.2010


Ответы (10)


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

В основе большинства современных PHP-фреймворков лежит простой трехэтапный рабочий процесс.

  1. URL-адрес запрашивается и направляется через центральный файл начальной загрузки index.php.

  2. Имя URL используется для получения имени класса и имени метода (и метода действия). Это ваша основная точка входа, где вы начинаете писать PHP для обработки запроса.

  3. В конце этого метода управление передается шаблону представления, который имеет доступ к определенным значениям, установленным на втором шаге.

Выберите фреймворк, узнайте, как он выполняет описанное выше, а затем напишите любой тип PHP, который вы хотите, в методе действия и шаблоне представления.

Да, в игре будет много другого кода PHP-фреймворка, но вам никогда не придется смотреть на него.

Да, фреймворк будет иметь множество функций и/или «предпочтительный» способ обработки вещей, но вам нужно использовать только те, которые вы сразу понимаете.

Когда вы начнете замечать образцы уродливого, скучного или небезопасного кода, снова взгляните на функции фреймворка. Чаще всего после того, как вы «сделали это неправильно», вы получите представление о том, почему код фреймворка сделал что-то определенным образом, и вы будете рады передать ответственность (я бы сказал, что модели в стиле ActiveRecord против кода SQL тут большой)

Когда вы начнете использовать объектно-ориентированные системы, предоставляемые фреймворком, вы начнете интересоваться тем, как они делают определенные вещи, а затем вы сможете начать копаться в основном коде фреймворка.

person Alan Storm    schedule 16.08.2010

Абсолютно. Фреймворки сделают за вас весь шаблонный код, предоставив вам более высокий уровень абстракции. Вероятно, вам будет легче писать код, не имея дело с некоторыми особенностями PHP.

Любой полуприличный фреймворк также решит проблемы безопасности, поэтому, если вы новичок в этом языке, скорее всего, ваше приложение, написанное на фреймворке, будет безопаснее, чем то, которое вы пишете с нуля.

person NullUserException    schedule 16.08.2010

Я бы не рекомендовал начинать с фреймворка начинающим разработчикам. Если у вас есть большой опыт работы с другими языками ООП, проблем возникнуть не должно. Но вы должны хотя бы знать основы (например, синтаксис), прежде чем даже думать об использовании фреймворков.

person Guido Hendriks    schedule 16.08.2010

Я бы сказал, что это зависит от вашего предыдущего опыта. Это не столько сам PHP, сколько среда веб-сервера, в которой он живет, которая может отвлекать. Если вы уже знакомы с жизненным циклом HTTP-запросов и писали веб-приложения таким же образом без сохранения состояния, как и в PHP, у вас не должно возникнуть больших проблем с переходом сразу к использованию фреймворка.

Однако, если вы исходите из фона с сохранением состояния или вообще без фона, абстракции, предлагаемые фреймворком, могут стать проблемой. Вы должны, по крайней мере, знать, как обрабатывать сеансы, файлы cookie, заголовки, $_POST и тому подобное в простом PHP, прежде чем детали будут абстрагированы от вас фреймворком. Также см. этот мой предыдущий ответ.

person deceze♦    schedule 16.08.2010

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

person Gian    schedule 16.08.2010

Я видел несколько человек (с большим предыдущим знанием ООП), которые без труда изучали PHP и symfony одновременно.

Фактически, переход от PHP к объектно-ориентированному языку — это просто изучение нескольких концептуальных вещей, а также синтаксиса и API самого PHP.

person alcuadrado    schedule 16.08.2010

На мой взгляд, нет ничего плохого в том, чтобы изучать фреймворк одновременно с изучением языка. Уже есть немало ситуаций, когда это необходимо. Например, большинство людей, изучающих Objective-C, одновременно изучают фреймворки Cocoa, большинство программистов на C# изучают .Net вместе с ним, даже JDK следует рассматривать как фреймворк, который вы изучаете вместе с языком Java. И что бы это ни стоило, я заранее изучил фреймворк Symfony с очень небольшим опытом работы с PHP.

person Shawn Craver    schedule 16.08.2010

Я бы посоветовал вам начать с турориала PHP на w3schools.com. Это коротко и ясно. Вы можете изучить все необходимые основы за один-два часа. Чтобы понять любой фреймворк, вам понадобится это. Затем изучите сначала и вторая глава кулинарной книги CakePHP и создайте свои первые приложения CakePHP, используя их руководства. В остальном я согласен с Аланом Стормом.

person bancer    schedule 16.08.2010
comment
php.net — лучший туториал;) - person Strae; 16.08.2010

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

Если вы запутались в некоторых других языках программирования, таких как java, c, изучение php-фреймворка одновременно с созданием вашего веб-сайта может быть не слишком сложным.

Почти все PHP-фреймворки, с которыми вы столкнетесь, используют шаблон проектирования MVC — если вы понимаете основы MVC, если вы внедрили или имеете представление о шаблонах проектирования на других языках программирования, тогда вам будет довольно легко начать с PHP-фреймворков.

Также решающим фактором будет ваш выбор PHP-фреймворка. Если вы используете такие PHP-фреймворки, как Codeigniter, Yii и, может быть, даже CakePHP, у которых сравнительно меньше кривых обучения, вы обнаружите, что ваш путь в PHP хорошо проложен. Хотя, если вы выберете какой-нибудь фреймворк, такой как Symfony, Zend, вы можете разочароваться в том, что тратите слишком много времени на выполнение простых вещей, что, в свою очередь, взорвет ваш проект.

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

Надеюсь, это поможет в решении.

person vikmalhotra    schedule 16.08.2010

Хотя я фанат фреймворков, я согласен с некоторыми другими комментариями выше. Начинать с фреймворка может быть довольно запутанно, особенно если вы не знакомы с теорией объектно-ориентированного программирования (ООП) Model View Controller (MVC).

По правде говоря, в свое время я видел намного больше незавершенных фреймворковых проектов, чем приложений, созданных без фреймворка. Если ваше приложение написано с использованием неуклюжего PHP и оно работает, вы можете нанять необходимые ресурсы для перехода на фреймворк и разработать его таким образом, чтобы он выдерживал интенсивное использование и эффективно использовал ресурсы.

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

Просто мои 2 цента как парня, который успешно выпустил пару корпоративных приложений - без использования PHP-фреймворка.

person Douglas Karr    schedule 16.08.2010