Изучение PHP - начать использовать фреймворк или нет?
Я заметил много рабочих мест в своей области для PHP. Раньше я никогда раньше не использовал PHP, и полагаю, что если я смогу получить больше возможностей, если я подберу это, тогда это может быть хорошей идеей. Проблема в том, что PHP без каких-либо фреймворков является уродливым и в 99% случаев действительно плохим кодом. Все учебники и книги, которые я видел, действительно паршивые - он никогда не показывает какую-либо хорошую практику программирования, но всегда быстрый и грязный способ делать что-то. Я боюсь, что попытка изучить PHP таким образом просто запечатлеет эти плохие практики в моей голове и заставит меня тратить время, пытаясь отучить их. Я использовал С# в прошлом, поэтому я знаком с OOP и шаблонами проектирования программного обеспечения и тому подобное.
Должен ли я пытаться изучать PHP, используя для этого одну из наиболее известных фреймворков? До сих пор я смотрел CakePHP, Symfony и Zend Framework; Zend представляется наиболее гибким, не будучи слишком ограниченным, как Cake и Symfony (хотя Symfony казался менее сдерживающим, чем CakePHP, который слишком сильно пытается стать Ruby on Rails), но многие обучающие программы для Zend, которые я видел, предполагают, что вы уже знаете PHP и хотите научиться использовать фреймворк.
Какая у меня будет лучшая возможность для изучения PHP, но изучение ХОРОШЕГО PHP, использующего реальные методы разработки программного обеспечения вместо кода спагетти? Кажется, что все книги и ресурсы PHP предполагают, что вы просто используете необработанный PHP и, следовательно, демонстрируете практические приемы, или что вы уже знаете PHP, и поэтому даже не касаетесь частей языка.
Ответы
Ответ 1
Начало работы
Если вы пытаетесь изучать PHP (нет опыта работы с PHP), я думаю, вы должны сначала подобрать удобную инфраструктуру, такую как Codeigniter. При просмотре screencast вы обнаружите, что с помощью Codeigniter вы можете создать простой blog за 20 минут. Я не думаю, что вы можете закодировать что-то вроде этого с помощью простого PHP, потому что codeigniter allready имеет следующий прочный фундамент:
-
MVC: По-моему, это помогает вам писать чисто разделенный код.
MVC - программный подход, который отделяет логику приложения от презентация. На практике это позволяет ваши веб-страницы должны содержать минимальные сценариев, так как презентация отдельно от PHP-скриптов.
-
Database: этот модуль помогает вам с большой болью в базе данных.
CodeIgniter поставляется с полнофункциональный и очень быстрый абстрактный класс базы данных, который поддерживает оба традиционных структур и активных Образцы записей. База данных функции предлагают понятный, простой синтаксис.
-
Легко: codeigniter действительно легко подобрать, что является огромным плюсом.
CodeIgniter устанавливается в четыре этапа:
- Разархивируйте пакет.
- Загрузите папки и файлы CodeIgniter на свой сервер. Обычно Файл index.php будет находиться в вашем корне.
- Откройте файл application/config/config.php с текстовым редактором и настроить базу URL. Если вы собираетесь использовать шифрование или сеансов, установите ключ шифрования.
- Если вы собираетесь использовать базу данных, откройте файл application/config/database.php с помощью текстового редактора и настройки базы данных.
-
Fast: Rasmus (изобретатель PHP) проверил множество фреймворков PHP (слайды 24-32) там и как вы можете видеть, что Codeigniter работает хорошо по сравнению с некоторыми другими фреймворками. Также я хотел бы отметить, что большинство слайдов из http://talks.php.net/ действительно хороши.
Изучение PHP
В прошлом я наткнулся на PHP-книгу Matt Zandstra, которая действительно хороша, и я думаю, вы должны прочитать ее, чтобы правильно изучить PHP.
PHP "лучшие" практики:
"Чистый" код:
- Изучите Recess. Мне также очень понравилась эта структура. Это поможет вам создать похожие приложения.
- Изучите TDD/PHPunit, чтобы правильно протестировать ваш код.
- Узнать MVC.
- Узнать ООП.
Производительность:
- APC: если это все возможно, вы должны действительно установить apc для ускорения php. Он сохранит код операции PHP в памяти (огромный, огромный импульс).
- Memcached: когда ваша база данных находится под большой нагрузкой, вам также необходимо сохранить ваш запрос в памяти.
Удачи!
Ответ 2
Если вы обеспокоены тем, что изучение PHP без рамки будет запечатлевать плохие практики в вашей голове, у нас есть большая проблема.;) Я считаю, что с любым языком вам должно быть комфортно с языком, прежде чем вы узнаете о каких-либо рамках. Как кто-то, кто вникал во многие из фреймворков PHP, я могу гарантировать, что использование одного из них не поможет вам автоматически освоить "хороший PHP" (все же вполне возможно написать дрянной код внутри контроллеров и т.д.).
Мой совет? Если вам уже нравится ООП, у вас не возникнет проблем с выбором хороших методов ООП в PHP. Сделайте это первым - убедитесь, что вам нравится язык и его особенности. Как только вы дойдете до этого момента, у вас будет большая база для оценки любой структуры, которую вы выберете.
(Я бы посоветовал вам не слишком сильно накачивать Zend Framework, да, он "гибкий" в том смысле, что он представляет собой свободную коллекцию библиотек, упакованных вокруг концепции MVC, но она не несет много истинной функциональности MVC и бесполезно сложна во многих областях)
Ответ 3
Начните с ванили, иначе вы будете искать способы исправления брокеров без знания того, как все работает на базовом уровне. PHP все-таки свободен, так же как apache и mysql, и после того, как они настроены (это не займет больше времени, чем день, даже если вы что-то сильно намотаете), вы можете играть все, что хотите.
Лучшее в php? Скомпилируйте изменения с обновлением страницы 8)
Ответ 4
Проблема в том, что PHP без каких-либо фреймворков является уродливым и в 99% случаев действительно плохим кодом.
Это не так. Там определенно много уродливого и плохого кода, но PHP без рамки не является неотъемлемо уродливым, и это не значит, что это плохой код. Подробно, да, все остальное нет. PHP просто влезет. Вот почему он популярен, и многие из людей, использующих PHP для быстрого извлечения веб-страницы, не имеют образования или заботы о разработке программного обеспечения.
Если у вас есть жесткий контроль над ООП и OOD, у вас не будет проблем с применением этих знаний в вашем PHP-коде. Просто прочитайте руководство PHP, чтобы получить головной убор. Вы обнаружите, что некоторые вещи не будут работать так, как вы ожидали бы, что они будут работать на С#, но это не должно быть для вас новостью.
Что касается того, следует ли начинать с рамки, я бы сказал, нет. Изучите структуру того, что она делает. Это означало облегчение разработки веб-приложений. Не используйте его для изучения PHP. И не ожидайте, что фреймворки PHP также будут изучать чистый и обслуживаемый код. Существует хорошие, но и много дерьма.
Ответ 5
Плохой код на всех языках выглядит как дерьмо. PHP просто упрощает вам писать такие и предоставляет визуальные подсказки, когда у вас есть.
Общая рекомендация: изучить php перед использованием фреймворков.
Все они ошибочны, поэтому вы можете узнать о них плохой практикой. Кроме того, вы бы разместили все свои яйца в одной корзине - плохая долгосрочная стратегия, особенно если вы собираетесь работать на php-стороне разработки.
Когда вы изучили php, попробуйте создать собственную PHP-инфраструктуру. Это почти как обряд посвящения. Вы не можете называть себя "разработчиком php" с прямым лицом, если вы не указали не менее 3 из них. Это дало бы вам хотя бы некоторое представление о том, что вы хотите в инфраструктуре php.
Ох... и держаться подальше от рамок CakePHP и CodeIgniter, которые, без сомнения, будут рекламировать другие. Они ужасны, наполнены плохими практиками. Если вы должны выбрать структуру, посмотрите на Symfony2 или Kohana (с огромными оговорками). У них обоих есть недостатки, но по крайней мере они слышали о некоторых "лучших практиках". Итог: все фрш-фреймы плохие. И некоторые хуже, чем другие.
И узнайте разницу между классическими MVC, Model2 MVC и MVP. Большинство фреймовых фреймов умышленно игнорируют различие.
Итак, в заключение, кое-что вам нужно узнать:
- запись надлежащего Model2 MVC
- Закон Деметры
- Принципы SOLID
- что такое глобальное состояние и почему оно плохое
- Инъекция зависимостей
Ответ 6
попробуйте посмотреть codeigniter. это просто начать с него.
нет де-факто стандарта фр-фрейма (в отличие от рубина и RoR)
мое предложение: попробуйте использовать фреймворк, готовые книги и статьи, когда вы не можете что-то понять
Ответ 7
Вот мое мнение:
Если вы хотите узнать php, не начинайте с рамки, пишите все с нуля, и это значительно улучшит ваши навыки, потому что если вы используете фреймворк, вам не нужно много делать и там, многому научившись, потому что рамки обычно предоставляют вам множество готовых решений для разных вещей.
Как только вы хорошо понимаете PHP (особенно ООП), только тогда вы должны перейти в рамки, и на этот раз структура будет проще для вас. Вы можете добавить или изменить фреймворк (с собственными классами и т.д.), Как только у вас будет хорошая команда над PHP. В конце я предлагаю вам перейти к CodeIgniter или Kohana (улучшено).
Ответ 8
Мое мнение - посмотреть на некоторые уроки, чтобы узнать основы того, как PHP обрабатывает вещи иначе, чем С# (например, как работают массивы, как работают хеши). Затем, как только вы это поймете, перейдите в рамки. Не тратьте время на большинство других учебников на PHP, потому что они просто продемонстрируют очень плохие методы кодирования (посмотрите на половину учебников по PHP/MySQL), никогда не было никакого разделения, все это просто было выполнено процедурным стилем - вы хотите избежать этого).
Поскольку я не использую PHP самостоятельно, я не могу сказать в пользу той или иной структуры. Из того, что я прочитал, Symfony, похоже, является "лучшим" в том, что касается хорошего сочетания инструментов, необходимых для работы без особых ограничений a la Rails. Zend Framework, о которой вы упомянули, кажется хорошим выбором, но на самом деле это похоже на J2EE для PHP; это не реальная структура, а набор полезных библиотек. Лучше всего подобрать долгосрочную перспективу, потому что она не заставляет использовать всю структуру, как другие. Таким образом, это может быть проще всего добавить в ваш инструментарий для использования во всех проектах. Например, если вы работаете над устаревшим проектом PHP со старым процедурным типом доступа к БД, вы можете ввести слой базы данных ZF, чтобы реорганизовать его, не доведя его до конца. Вы не можете сделать это с помощью Symfony, например.
CodeIgniter/Kohana (как я понимаю, это Кохана - это эволюция), есть и сильная группа сторонников, но я не могу говорить о том, насколько это хорошо. Я знаю, что CI типа shoehorns MVC для обеспечения совместимости со старым "плохим" способом выполнения PHP. У него много сторонников, поэтому, возможно, стоит заглянуть в него.
Еще одно преимущество, которое я только что задумал для ZF, заключается в том, что имейте в виду, если вы получаете работу PHP, весьма сомнительно, что они уже будут использовать фреймворк, особенно если рассматриваемое приложение было более нескольких года. Скорее всего, это будет стандартный классический ASP (я уверен, что вы знакомы или, по крайней мере, слышали ужасные истории) о том, что у него есть десятки включенных файлов, а также логика микширования и презентация на страницах PHP. ZF было бы легче интегрировать в сценарий, подобный этому, чем в основном бросать весь старый код в ящик и начинать новый с полной структуры стека. Просто пища для размышлений.
Опять же, я не парень PHP, но я бы пошел по этому общему пути:
- Прочитайте промежуточную книгу PHP, чтобы узнать нюансы языка (держитесь подальше от новичка, так как вы сказали, что у вас уже есть опыт программирования).
- Посмотрите на Symfony, чтобы у вас была рамка с полным стеком под вашим поясом.
- Посмотрите на Zend Framework, поэтому у вас есть библиотека инструментов, с которыми вы можете работать для проектов, которые более сложны, чем сама инфраструктура (например, что-то большее, чем базовые экраны CRUD) и/или для интеграции в существующие проекты.
Надеюсь, это поможет!