Нет PHP для больших проектов? Почему нет?

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

Поскольку я в первую очередь разработчик PHP, я задаю два вопроса:

  1. Что определяет «большой проект»?
  2. Почему нет? Какие подводные камни при использовании PHP

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

Мысли?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
64
1
22 233
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Наша компания управляет несколькими крупными веб-сайтами, использующими PHP, и у нас не было проблем, связанных с этим языком.

Многие люди, которые говорят, что не используйте его, на самом деле говорят, что не используйте PHP 4. Все сводится к следующему.

вы можете писать хороший код на любом языке

а также

вы можете писать плохой код на любом языке

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

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

Я слышал, что facebook aer больше не использует PHP. Ссылки .php теперь являются устаревшими и, вероятно, переписываются или анализируются по-другому через сервер. Не могу вспомнить, где я читал эту статью, но, насколько я могу судить, она была достойной.

alex 22.12.2008 03:07

Интерфейс Facebook написан на php, если вообще есть. Я знаю, что Myspace использует .NET, но имеет ссылки ".cfm" для совместимости с устаревшими версиями ...

navitronic 22.12.2008 03:10

Facebook по-прежнему написан на PHP

Cal 27.01.2009 20:40

Да, CFM в основном ассоциируется с разметкой Cold Fusion.

DoctorLouie 04.02.2010 07:42

Facebook - это PHP, но им пришлось написать переводчик PHP-> C++, чтобы преодолеть проблемы с производительностью. developers.facebook.com/news.php?story=358&blog=1

Matt Garrison 26.02.2010 18:41

Они должны были бы сделать это на любом интерпретируемом языке. Просто так оно и есть.

Fidelix 12.09.2013 23:37

Сегодня Facebook использует hacklang.org, собственный язык, производный от PHP. В видео, которое я попробовал, но не нашел снова, Сара (я не знаю ее фамилии), один из разработчиков, сказала, что они не намерены разделять языки.

Rafael Barros 01.05.2014 17:24

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

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

Например, абстракция базы данных в PHP (имхо) прискорбна. Это зависит от поставщика. С MySQL люди обычно делают такие вещи, как:

function get_users($surname) {
  mysql_query("select * from users where surname = '$surname'");
  ...
}

что плохо по нескольким причинам:

  • Он плохо использует кеш запросов;
  • Он не обрабатывает экранирование символов (что, конечно, можно сделать с помощью mysql_escape_string(), но вы будете удивлены, как часто люди этого не делают); а также
  • Довольно легко написать код таким образом, чтобы разрешить атаки с использованием SQL-инъекций.

Лично я предпочитаю mysqli по всем вышеперечисленным причинам, но у него есть свои проблемы: а именно то, что использование полей LONGTEXT приводит к сбою mysql и, по крайней мере, с 2005 года, без исправлений (да, я и несколько других подняли ошибку).

Сравните это с Java (с которой я более знаком), и JPA или Ibatis - намного лучшие решения ORM с более высокими затратами на запуск, но они помогут вам в масштабе предприятия.

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

При этом PHP + memcached / APC + beanstalkd имеет большое значение.

О, это еще одна проблема: PHP на самом деле не поддерживает фоновую обработку или многопоточность. Для этого вам нужно что-то еще (или отдельные скрипты). Если вы используете что-то еще, почему бы не использовать это и для веб-материалов (например, Java, Ruby, .Net и т. д.)?

Facebook - это своего рода мучительный пример. Facebook - это не сложное бизнес-приложение. Это довольно простой, очень сильно масштабированный.

BobbyShaftoe 22.12.2008 03:05

как именно этот пример запроса плохо использует кеш запросов?

ʞɔıu 22.12.2008 03:37

PHP теперь имеет библиотеки, не зависящие от базы данных, для подключения к базе данных. (PDO). PDO также поддерживает prepare () и execute (), которые обрабатывают экранирование ввода. То, что PHP допускает плохое кодирование, не делает его плохим языком.

Ryan Doherty 22.12.2008 04:01

@Ryan: Кто-нибудь предполагал, что PHP здесь плохой язык? Возможно, это реакция Kneejerk на не совсем позитивное обсуждение PHP? ;)

Gareth 22.12.2008 04:39

В этом примере есть проблема, которую вы упустили: он не отвлекает доступ к базе данных от запроса функции: get_users () не должен даже собирать SQL, не говоря уже об отправке самого запроса. Так много людей совершают эту ошибку, это не смешно.

staticsan 22.12.2008 08:04

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

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

(Я, кстати, не думаю, что указание на несколько крупных сайтов и утверждение, что им удалось это сделать на PHP, является аргументом против этого. Это немного похоже на утверждение, что сигареты не вызывают рак, потому что ваш сосед курил и дожил до 100 лет.)

Курение и жизнь - это не вопрос выбора, это вопрос обстоятельств. Создание успешного сайта на PHP - это продемонстрированный вопрос выбора, который может привести к лучшим отраслевым практикам при размещении на таких сайтах, как www.highscalability.com.

jerebear 22.12.2008 09:00
Ответ принят как подходящий

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

PHP зарекомендовал себя как хорошо масштабируемый: Википедия - один из крупнейших и самых популярных сайтов в Интернете, работающий на PHP. Достаточно сказано?

Существует множество инструментов / библиотек, которые дают вам основу для работы, что снижает вероятность того, что кто-то напишет плохой, менее обслуживаемый код: см. CakePHP, Symfony, PDO, Smarty и т. д. И т. Д. И т. Д.

Он получил плохую репутацию, потому что это язык с очень низкими барьерами для входа: он бесплатный, вы можете получить очень дешевый PHP-хостинг, документация лучшая, что есть, в Интернете есть множество учебных пособий, плюс он упрощает многие вещи (например, открыть URL-адрес и получите содержимое файла: file('http://www.google.com');). Это означает, что многие новички подхватили его и создали на нем много очень хитрых сайтов, но это произойдет с любым языком, который вы выберете в качестве своего первого.

Работайте с прочной структурой ORM (есть около 30 вопросов о том, какой из них лучше), и он будет относиться к вам хорошо.

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

J. Taylor 29.05.2010 11:10

Вы можете делать почти все на любом языке, вы можете писать спагетти-код или смешивать логику и представление на гибридном объектно-ориентированном языке в .NET и хороший шаблонный дизайн на PHP или небольшое приложение на ASP / VB6, которое идеально подходит для ваших целей. Плохой дизайн приведет к дорогостоящему обслуживанию. Слишком много сложностей для простого проекта. Я бы не стал создавать сложную ERP-систему или графическую игру на PHP, для этого есть инструменты получше. Короче говоря, используйте правильный дизайн и инструменты для работы.

hagensoft 08.09.2012 13:30

Как разработчик как PHP (Laravel), так и Ruby (Rails), я считаю, что PHP не хватает в нескольких областях, которые имеют значение для корпоративной разработки. Я склонен писать беспорядочный код на PHP, тогда как Rails мягко заставляет меня писать чистый / поддерживаемый код.

Nilay Anand 08.12.2016 12:11

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

mofidul 10.07.2017 19:17

Проверьте этот аналогичный вопрос - Может ли PHP обрабатывать сайты корпоративного уровня, а также Java

Резюмируя: Facebook, Wikipedia, Yahoo.com, Digg, Flickr и многие другие гигантские сайты работают на PHP. Если вы когда-нибудь приблизитесь к созданию чего-то подобного, вы все равно можете быть уверены, что сможете добиться этого с помощью PHP.

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

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

BobbyShaftoe 22.12.2008 04:43

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

Eran Galperin 22.12.2008 05:01

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

Eran Galperin 22.12.2008 05:01

Для меня, говоря о больших или даже огромных проектах, это (в первую очередь) сводится к одному слову: Зависимости.

Проблема со скриптовым языком похожа на любую проблему в мире: самое большое преимущество - это одновременно и самый большой недостаток.

Самое большое преимущество - это бесплатный и быстрый код. Просто напишите сценарий, и он будет соответствовать его назначению. Никакой многословности, просто код.

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

Это не верно для «нормального» генерирования веб-страниц, что бы здесь ни было под нормальным. Но у нас есть продукт, основанный примерно на 500 тыс. Строк исходного кода, с настройками для клиентов, также состоящими из дополнительных 100 тыс. Строк кода. И я смертельно рад, что компилятор проверяет все зависимости и предупреждает / об ошибках, если я сделал что-то не так (например, говоря на самом низком уровне, неверно введя переменную или вызов метода).

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

Все это хорошие ответы.

Я был новичком. Я занимаюсь программированием всего 5 лет, но я напрямую поддерживаю и управляю 85 небольшими и крупными веб-сайтами, и я скажу вам, что вероятность того, что вас подадут в суд из-за того, что веб-сайт не будет работать на день, будет во многом способствовать вашему желанию учиться как сделать и улучшить код.

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

Спасибо всем!

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

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

Другой момент - постоянное добавление функций и отмена каких-то других. Предполагается, что добавление ООП в PHP 5 упростит жизнь программистам, но как насчет соображений обратной совместимости?

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

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

PHP Фактически расшифровывается как PHP Hypertext Preprocessor, своего рода рекурсивная шутка для вундеркиндов :)

Chris 18.09.2013 19:07

Другие вопросы по теме