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

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

Будучи главным разработчиком PHP, я задаю два вопроса:

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

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

Мысли?

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

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

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

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

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

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

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

    а также

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

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

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

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

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

    Например, абстракция базы данных в PHP является (imho) горькой. Это специфический поставщик. С 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 и т. Д.)?

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

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

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

    Проверьте этот похожий вопрос – может ли PHP обрабатывать сайты уровня предприятия, а также Java

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

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

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

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

    Наибольшее преимущество – свободный и быстрый код. Просто напишите сценарий, и он будет служить сервером. Не требуется многословия, просто код.

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

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

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

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

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

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

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

    Всем спасибо!

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

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

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

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

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