Запуск большого PHP-проекта. Необходимо ли ООП или это просто предпочтение?


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

К опытные программисты:

Что требуется для осуществления такого проекта?
Какие-либо предпочтения в рамках?
Необходим ли ООП?
Существуют ли определенные способы создания такого масштабного проекта?

Я слышал о различных фреймворках, таких как CakePHP, codeigniter и Zend, но я не уверен, что мне следует из этого делать.

Спасибо!

Author: eveo, 2012-02-19

7 answers

Самый важный шаг в любом проекте - это ПЛАНИРОВАНИЕ. Планируйте все, что вы можете, базу данных (таблицы, столбцы, отношения), поток процессов и т. Д.

Ничего не нужно, но рекомендуется использовать ООП, потому что:

  1. Вы не заблудитесь в своем собственном коде
  2. Легко редактируется и добавляется (отражается для изменений)

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

 8
Author: Ofir Baruch, 2012-02-19 18:15:18

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

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

Для ООП я бы очень рекомендовал это, так как это делает все намного проще. Если вы никогда раньше не работали с объектно-ориентированными принципами, вначале это может показаться вам немного сложным, но как только вы преодолеете кривую обучения, вы будете более чем удовлетворены результатом, тем, что вы узнали, и тем, насколько легко и организованно будет выглядеть вся ваша система, особенно когда вам придется вносить небольшие изменения или обновления.

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

 3
Author: Kypros, 2012-02-19 18:20:11

ООП, в конечном счете, зависит от предпочтений, но есть несколько заметных преимуществ. Самое первое, что приходит на ум, - это безопасность. Параметризованные запросы с mysqli, которые предназначены для работы в режиме ООП, транзакции, если они у вас будут. Если вам нужна CMS, то вам также, вероятно, придется отображать довольно много данных из базы данных, что потребует разбиения на страницы. Вместо того, чтобы переписывать "процедурный" алгоритм разбиения на страницы, вы могли бы подойти ко всему с ООП с одним классом. В конечном счете, это все еще вопрос предпочтений, но, насколько я знаю, ооп имеет множество преимуществ в реальных приложениях. Удачи вам в вашем проекте!

 2
Author: , 2012-02-19 18:12:48

Ну, смысл ООП в том, чтобы сделать программирование более похожим на реальный мир. В реальном мире вы имеете дело с объектами. Ваша работа является объектом класса Job, вы являетесь объектом класса Employee, который расширяет класс Person, вы возвращаетесь домой к объекту класса Apartment, который содержится в объекте класса Building, который содержится в объекте класса Block.

Я хочу сказать, что смысл ООП в том, чтобы облегчить вам жизнь, вы можете назначить сообщение на форуме в качестве объекта, как вы можете для пользователей и все такое. Вся структура данных, которую вы можете создать в ООП, намного сложнее и понятнее, чем процедурный PHP.

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


Что касается других ваших вопросов:

  • Что требуется для реализации такого проекта? - Планирование и многое другое. Планируйте что-нибудь заранее вам может понадобиться (с точки зрения базы данных, существующих проектов/классов, файлов, страниц). Также планируйте расширение, чтобы в будущем добавлять модули и таблицы.
  • Какие-либо предпочтения в отношении фреймворков? - Я не большой поклонник фреймворков, но я предлагаю вам изучить концепцию MVC и единой точки входа.
 2
Author: Madara Uchiha, 2012-02-19 18:37:55

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

При этом, как говорится, определенно бывают моменты, когда ОО является более помеха, чем благо. Что вам нужно сделать, так это сесть и по-настоящему визуализировать свой проект в целом. Когда вы смотрите на общую картину, видите ли вы вещи как инкапсулированные объекты? Будет ли у вас один блок кода, который вы будете использовать много раз, чтобы описать вещи, которые похожи, но немного отличаются? Или ваш проект немного более линейный, где вы можете видеть, что большинство ваших сценариев выполняется в традиционном формате "сверху вниз"?

 2
Author: Nathan Cox, 2012-02-28 17:10:31

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

И для большого проекта настоятельно рекомендуется использовать ООП для простоты без ООП ваш код будет очень злым и очень сложным в обслуживании

 1
Author: khizar ansari, 2012-02-19 18:16:32

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

Рекомендуется использовать ООП, потому что это может сэкономить вам много времени.

Один хороший фреймворк посмотрите здесь: http://code.google.com/p/phpstartapp/

 1
Author: mdakic, 2012-02-19 18:23:12