Как использовать PHP для больших проектов? - PullRequest
24 голосов
/ 22 декабря 2008

Был задан вопрос: Нет PHP для больших проектов? Почему бы и нет? Это постоянная тема, и разработчики PHP - по некоторым причинам - вынуждены защищать PHP .

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

Итак, как вы пишете большое, сложное, масштабируемое, безопасное и надежное приложение PHP?

РЕДАКТИРОВАТЬ: Хотя я понимаю, что организационные аспекты важны, они относятся к любой крупный проект. То, на что я в первую очередь нацеливаюсь, - это техническое руководство и способы решения распространенных проблем масштабируемости. Использование кэша кода операции, такого как APC, является очевидным началом. Сеансы, поддерживающие кластеры, будут другими. Вот к чему я клоню.

Ответы [ 6 ]

20 голосов
/ 22 декабря 2008

По большей части проблемы с php связаны не столько с языком. Проблемы возникают из-за сочетания низкого барьера входа и отсутствия какой-либо инфраструктуры, чтобы избежать общих проблем программирования или проблем безопасности. Это язык, который сам по себе довольно быстрый и грязный. Тем не менее, он по-прежнему имеет много преимуществ для крупномасштабных веб-приложений. Вам просто нужно знать, как добавить некоторый уровень инфраструктуры, чтобы избежать многих типичных ошибок веб-программирования. См. Что должен знать разработчик до создания общедоступного веб-сайта , чтобы получить помощь в этом.

Вам необходимо узнать о причинах, по которым php может сделать ваше веб-приложение небезопасным или проблемным, и научиться смягчать эти проблемы. Вы должны узнать о том, как использовать php для безопасного доступа к вашей базе данных. Вы должны научиться избегать SQL-инъекций. Вы должны узнать о злых вещах, таких как register_globals и почему вы никогда не должны их использовать. Короче говоря, вы должны сделать свою домашнюю работу о своем инструменте, прежде чем просто погрузиться в реальное крупномасштабное веб-приложение.

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

Кроме того, полезные вопросы, которые могут помочь:

9 голосов
/ 22 декабря 2008

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

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

4 голосов
/ 03 июля 2009

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

edit: это был серьезный ответ ... Haxe / PHP автоматически решает множество проблем, упомянутых в посте, помеченном как ответ ...

  • register_globals выключен ... вы получаете ваши параметры через php.Web
  • с использованием слоя SPOD (тот же API для php) для базы данных автоматически позаботится об экранировании (и автоматически предоставит вашу модель (и templo - довольно хороший шаблонизатор) , так что должно помочь за ваши взгляды))
  • имея типизированный язык, вы, скорее всего, будете писать более качественный код ... плюс языковые возможности, так как дженерики и перечисления очень мощные ... и в Haxe есть много волшебства времени компиляции, которое также представляет интерес ... ... более мощный язык всегда хорош для решения сложных проблем ...

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

я думаю, что Haxe - очень хороший ответ на "большие", "сложные", "безопасные" и "надежные" ... масштабируемость не исходит от самого Haxe, конечно ... но, тем не менее, если вы проверите haxelib , тогда вы найдете много вещей, которые помогут для масштабируемости ... таких как memcached (вам придется изменить neko.net.Socket на php.net.Socket в memcached.Connection) ...

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

2 голосов
/ 22 декабря 2008

Вы делаете как на любом другом языке или в любой другой среде.

В разработке проекта есть несколько простых шагов:

  • Организация ; Перед тем, как приступить к программированию, вам нужно все организовать, имея документацию, диаграммы uml и другие подготовительные работы.

  • Структура ; Перед тем, как вы начнете кодировать, а также после запуска, вам нужно сосредоточиться на структуре, а это означает, что вам всегда нужно делать это правильно, а не делать какие-либо спагетти решения. Сохраняйте код простым и хорошо прокомментированным.

Эти два пункта просты и применяются во всех областях разработки, несмотря на язык. Сделайте это простым и хорошо документированным, и вы обнаружите, что разработка крупномасштабного веб-приложения на PHP так же проста, как и в ASP.NET, Ruby или чем-то еще.

Однако, когда мы подходим к стадии разработки, вам нужно получить хорошую IDE, использовать хорошую базу данных, использовать репозиторий, получить систему MVC / Template, хотя это выполняется в части «Structure».

Точно так же, как побочная точка, разделяя приложение на разные уровни: DLF (Data, Logic, Front). Используйте хотя бы эти три слоя, и вы поймете, что разработка пойдет легко.

1 голос
/ 23 декабря 2008

Использование Framework-View-Controller. Это было сказано, да. И, по крайней мере, один инженер для каждой части.

Модель: Ваш администратор базы данных должен написать код модели. Больше нельзя позволять писать операторы SQL.

Представление: тот, кто лучше всех знает CSS и Javascript, должен выполнять часть представления. Он / она должен написать наименьший код PHP, он использует переменные PHP.

Контроллер: она настоящий PHP-кодер, а также инженер внутреннего сервера, надеюсь, с использованием или без использования других языков сценариев.

0 голосов
/ 18 июля 2010

У меня был хороший опыт использования CodeIgniter. Я думаю, что это достаточно легкий вес, чтобы вы могли опуститься и пачкаться, но также добавляет хороший слой абстракции MVC. Подумайте об использовании Doctrine ORM с ним. Пример: http://pampersmybabyregistry.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...