Никакой PHP для крупных проектов? Почему нет?

Я только что создал проект CloneExtensions library . Он выполняет быстрый, глубокий клон, используя простые операции присваивания, сгенерированные компиляцией кода времени исполнения выражения.

Как его использовать?

Вместо того, чтобы писать свои собственные методы Clone или Copy с тоном назначений между полями и свойствами, сделайте программу для себя, используя дерево выражений. GetClone() метод, помеченный как метод расширения, позволяет просто вызвать его в вашем экземпляре:

var newInstance = source.GetClone();

Вы можете выбрать, что должно быть скопировано с source на newInstance, используя CloningFlags перечисление:

var newInstance 
    = source.GetClone(CloningFlags.Properties | CloningFlags.CollectionItems);

Что можно клонировать?

  • Примитивные (int, uint, byte, double, char и т. д.), известные неизменные типы (DateTime, TimeSpan, String) и делегаты (включая Action, Func и т. д.)
  • Nullable
  • T [] массивы
  • Пользовательские классы и структуры, включая общие классы и структуры.

Следующие члены класса / структуры клонируются внутри страны:

  • Значения общедоступных, а не только полей readonly
  • Значения публичных свойств как с get, так и с набором accessors
  • Элементы коллекции для типов, реализующих ICollection

Насколько это быстро?

Решение быстрее, чем отражение, потому что информация членов должна быть собирается только один раз, прежде чем GetClone будет использоваться впервые для заданного типа T.

Он также быстрее, чем на основе сериализации

и более ...

Подробнее о сгенерированных выражениях в документации читайте больше.

Пример отладки образца выражения для List:

.Lambda #Lambda1(
    System.Collections.Generic.List`1[System.Int32] $source,
    CloneExtensions.CloningFlags $flags,
    System.Collections.Generic.IDictionary`2[System.Type,System.Func`2[System.Object,System.Object]] $initializers) {
    .Block(System.Collections.Generic.List`1[System.Int32] $target) {
        .If ($source == null) {
            .Return #Label1 { null }
        } .Else {
            .Default(System.Void)
        };
        .If (
            .Call $initializers.ContainsKey(.Constant(System.Collections.Generic.List`1[System.Int32]))
        ) {
            $target = (System.Collections.Generic.List`1[System.Int32]).Call ($initializers.Item[.Constant(System.Collections.Generic.List`1[System.Int32])]
            ).Invoke((System.Object)$source)
        } .Else {
            $target = .New System.Collections.Generic.List`1[System.Int32]()
        };
        .If (
            ((System.Byte)$flags & (System.Byte).Constant(Fields)) == (System.Byte).Constant(Fields)
        ) {
            .Default(System.Void)
        } .Else {
            .Default(System.Void)
        };
        .If (
            ((System.Byte)$flags & (System.Byte).Constant(Properties)) == (System.Byte).Constant(Properties)
        ) {
            .Block() {
                $target.Capacity = .Call CloneExtensions.CloneFactory.GetClone(
                    $source.Capacity,
                    $flags,
                    $initializers)
            }
        } .Else {
            .Default(System.Void)
        };
        .If (
            ((System.Byte)$flags & (System.Byte).Constant(CollectionItems)) == (System.Byte).Constant(CollectionItems)
        ) {
            .Block(
                System.Collections.Generic.IEnumerator`1[System.Int32] $var1,
                System.Collections.Generic.ICollection`1[System.Int32] $var2) {
                $var1 = (System.Collections.Generic.IEnumerator`1[System.Int32]).Call $source.GetEnumerator();
                $var2 = (System.Collections.Generic.ICollection`1[System.Int32])$target;
                .Loop  {
                    .If (.Call $var1.MoveNext() != False) {
                        .Call $var2.Add(.Call CloneExtensions.CloneFactory.GetClone(
                                $var1.Current,
                                $flags,


                         $initializers))
                } .Else {
                    .Break #Label2 { }
                }
            }
            .LabelTarget #Label2:
        }
    } .Else {
        .Default(System.Void)
    };
    .Label
        $target
    .LabelTarget #Label1:
}

}

Что имеет такое же значение, как следующий код c #:

(source, flags, initializers) =>
{
    if(source == null)
        return null;

    if(initializers.ContainsKey(typeof(List))
        target = (List)initializers[typeof(List)].Invoke((object)source);
    else
        target = new List();

    if((flags & CloningFlags.Properties) == CloningFlags.Properties)
    {
        target.Capacity = target.Capacity.GetClone(flags, initializers);
    }

    if((flags & CloningFlags.CollectionItems) == CloningFlags.CollectionItems)
    {
        var targetCollection = (ICollection)target;
        foreach(var item in (ICollection)source)
        {
            targetCollection.Add(item.Clone(flags, initializers));
        }
    }

    return target;
}

Разве не совсем так, как вы напишете свой собственный метод Clone для List?

65
задан cletus 4 June 2009 в 14:47
поделиться

11 ответов

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

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

существует много инструментов/библиотек там, которые дают Вам платформу для работы в, делая его менее вероятно, что кто-то запишет плохой, менее - удобный в сопровождении код: посмотрите CakePHP, Symfony, PDO, Присяжного острослова, и т.д. и т.д. и т.д.

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

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

96
ответ дан Community 24 November 2019 в 15:15
поделиться

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

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

, и

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

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

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

32
ответ дан jskulski 24 November 2019 в 15:15
поделиться

Theres никакая причина Вы не можете использовать 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, и т.д.)?

18
ответ дан cletus 24 November 2019 в 15:15
поделиться

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

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

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

4
ответ дан frankodwyer 24 November 2019 в 15:15
поделиться

Как вопрос я связался , был удален, я помещу часть его сюда:

Вопрос

<час>

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

, Таким образом, мне по-настоящему любопытно. Что я пропускаю? Что делает PHP хорошим языком?

Вот мои причины неприязни его:

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

  • PHP имеет непоследовательное упорядочивание параметра встроенных функций, например, array_map по сравнению с array_filter, который является раздражающим в простых случаях и повышает все виды неожиданного поведения или хуже.

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

  • отсутствие А соображения в модернизации. Вышеупомянутая депрекация устранила способность к, во многих случаях, обеспечьте значения ключевого слова по умолчанию для функций. Они зафиксировали это в PHP 5, но они удержали от использования передачу ссылкой в PHP 4!

  • Плохое выполнение пространств имен (раньше никакие пространства имен вообще). Теперь, когда пространства имен существуют, что мы используем в качестве разыменовать символа? Обратная косая черта! Символ, используемый универсально для выхода, даже в PHP!

  • Чрезмерно широкое неявное преобразование типов приводит к ошибкам. У меня нет проблемы с неявными преобразованиями, скажем, плавания к целому числу или назад снова. Но PHP (длятся, я проверил), счастливо попытается волшебно преобразовать массив в целое число.

  • Плохая производительность рекурсии. Рекурсия является существенно важным инструментом для записи на любом языке; это может сделать сложные алгоритмы намного более простыми. Плохая поддержка непростительна.

  • Функции нечувствительны к регистру. Я понятия не имею, что они думали на этом. Язык программирования является способом определить поведение и к компьютеру и к средству чтения кода без неоднозначности. Нечувствительность к регистру представляет много неоднозначности.

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

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

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

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

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

, Что я пропускаю о PHP? Я вижу органически выращенную, плохо управляемую путаницу языка, это порождает бедных программистов.

Так убеждают меня иначе!

<час>

Главный Расчетный Ответ

<час>

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

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

я и любите и ненавидьте эту тему. Поскольку в ее ядре, эта проблема корректна. Почему некоторое разделение функции bi-слова с подчеркиванием, и некоторые не? Почему игла и параметры стога сена подкачивают положения в подписи аргумента иногда? Это смешно. Но в конце дня... это действительно имеет значение? Мой IDE с intellisense и php.net просто щелчок браузера далеко, это является просто не настолько большим из соглашения. Действительно ли это - отрицание против PHP как язык? Да. Это препятствует моей способности быть эффективным программистом? Нет.

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

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

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

я не думаю, что существует общее отсутствие соображения вообще, я думаю, что Вы просто погорели этим конкретным изменением и были оставлены с кислым вкусом во рту. Изменения языка часто являются известными месяцами если не годы загодя. Руководство по миграции было предоставлено для перемещения от 4 до 5, и различия в версии документируются в руководство. Передача ссылкой времени вызова была ужасной "функцией" и не дает разработчику выразительного питания, которое они не могут получить другими средствами. Я рад, что этого не стало (наряду с другим дерьмом как волшебные кавычки)

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

я смешал чувства об этом. Часть меня думает, "кто заботится, символьный выход не имеет никакого значения за пределами строки так или иначе", и часть меня думает, "конечно, что они могли использовать что-то лучше". Но могли они? Я не знаю, я не разработчик для синтаксического анализатора Зенда. Действительно ли это - огромный контроль, что, пока 5.3 PHP никогда не имели пространства имен вообще? Да, абсолютно.

Чрезмерно широкое неявное преобразование типов приводит к ошибкам. У меня нет проблемы с неявными преобразованиями, скажем, плавания к целому числу или назад снова. Но PHP (длятся, я проверил), счастливо попытается волшебно преобразовать массив в целое число.

я думаю, что нормально не соглашаться с тем, как PHP делает это, но не соглашается, что это делает язык "плохо". Но спросите меня, сколько я хочу сидеть в этой теме и обсудить о слабом по сравнению со строгим контролем типов. (P.S. Я не делаю, во всем ) Для записи: PHP выпустит погрешность нивелировки E_WARNING, когда тип аргумента будет иметь значение, и не может решенным приведением.

Плохая производительность рекурсии. Рекурсия является существенно важным инструментом для записи на любом языке; это может сделать сложные алгоритмы намного более простыми. Плохая поддержка непростительна.

PHP является DSL для сети. Я делал его полный рабочий день в течение 8 лет и возможно использовал рекурсию 4 или 5 раз, обычно для некоторого типа раздражающего каталога или обхода XML. Просто не шаблон необходим для веб-разработки настолько часто. Я не извиняю медленную производительность, но это - академическая проблема намного больше, чем это - производственная проблема. При необходимости в действительно мощной рекурсивной производительности PHP уже является неправильным языком для Вас.

Функции нечувствительны к регистру. Я понятия не имею, что они думали на этом. Язык программирования является способом определить поведение и к компьютеру и к средству чтения кода без неоднозначности. Нечувствительность к регистру представляет много неоднозначности.

я полностью 100% соглашаются с этим.

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

*Hmmm, эта тема звучит отчаянно знакомой...

, Но серьезно, я нахожу его замечательным, что люди будут жаловаться на язык, который абсолютно 100% позволять Вам реализовывать любую выходную систему, которую Вы хочет (чистый объем и стиль PHP, который шаблонная обработка одних только систем говорила с этим) - ИЛИ - пропускать все эти издержки и просто производить непосредственно. Это делает PHP плохо вообще. Это быть часть того, что делает пользу PHP.

производительность PHP плачевная без кэширования. Кто-либо продает коммерческий продукт кэширования за PHP? О, смотрит, разработчики PHP делает.

Вы имеет в виду кэширование байт-кода (как акселератор), или кэширование вывода?

, Если первый, то я действительно знает, о каком количестве я заботящийся об этой теме. Акселераторы свободные и легкие работать. Мы спорил о том, почему это быть часть языка, но в конце, я думает, что это имеет значение очень.

, Если Вы говорящие о кэшировании вывода тогда, я знает, что говорит Вам. ЛЮБОЙ веб-проект со значительным транспортным кэшированием потребностей (отбирать подкаст № 27, например). Это PHP-конкретным-вопросом во всем .

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

<час>

Второй Главный Расчетный Ответ

<час>

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

, Но, с другой стороны, это обладает некоторыми преимуществами:

  • Повсеместный
  • Быстрый (особенно использование кэшей кода операции)
  • Огромное сообщество (и замечательная документация)
  • Работы

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

<час>

Третий Главный Расчетный Ответ

<час>

, Что я пропустил о PHP? Я видя органически выращенную, плохо управляемую путаницу языка, это породило бедных программистов.

Простой. То, что бедные программисты существуют очень защитными о своем языке.;) PHP легко, намного легче, чем альтернативы, и как только Вы изучаете его, это точно очевидно 1) что случилось с PHP, 2) как альтернативы являются лучше и 3) как переключается на и - одна из альтернатив.

И возможно то, что, ну, в общем, что имели альтернативы люди? ASP? Это имеет много проблем самостоятельно, от неспособности работало на большинстве веб-серверов (Apache), к некоторым смешным и сверхспроектированным проектным решениям самостоятельно (веб-формы? Состояние отображения? Ajax, где Ваши асинхронные" запросы прервите и работайте последовательно ?) Ruby on Rails? Ну, возможно, кроме того, сколько веб-серверов поддерживало его снова? Это точно легко доступно в данный момент. И это не медленно. Таким образом, возможно, "сила" PHP состояла действительно в том, что никакой хороший альтернатива будет существовать. По крайней мере, это быть то, почему я избегаю всего веб-программирования когда вообще возможный. PHP является, и я слишком увлечен ни одной из альтернатив также.

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

Это не просто противная путаница, язык, разработанный людьми, которые не являются или способные, для разработки языка.;)

<час>
17
ответ дан Community 24 November 2019 в 15:15
поделиться

Проверьте этот подобный вопрос - , Может сайты уровня предприятия дескриптора PHP, а также Резюме Java

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

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

2
ответ дан Community 24 November 2019 в 15:15
поделиться

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

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

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

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

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

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

2
ответ дан Georgi 24 November 2019 в 15:15
поделиться

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

1
ответ дан JW. 24 November 2019 в 15:15
поделиться

Это все хорошие ответы.

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

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

Спасибо все!

0
ответ дан jerebear 24 November 2019 в 15:15
поделиться

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

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

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

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

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

1
ответ дан 24 November 2019 в 15:15
поделиться
0
ответ дан 24 November 2019 в 15:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: