Статьи

Действительно ли пространства имен PHP настолько плохи?

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

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

PHP это беспорядок

Такие языки, как C # и Java, были разработаны и соответствуют строгим стандартам синтаксиса. PHP развился . Первоначальная версия была выпущена в 1995 году, а к версии 3 это был популярный процедурный язык программирования. В версии 4 представлена ​​элементарная ориентация объекта, а в версии 5 — достаточно стандартная модель ООП. Пространства имен были добавлены в версию 5.3.

Критики PHP будут утверждать, что язык беспорядок. Имена функций противоречивы (например, strpos, str_split, substr), обработка объектов помечена, и некоторые синтаксис отличается — если не странный — по сравнению с другими языками.

Тем не менее, PHP остается наиболее широко используемым языком разработки на стороне сервера. Его универсальность является одной из его основных сильных сторон:

  • Начинающие разработчики могут начать с простого процедурного программирования. Им не нужно прикасаться к методам ООП, и они все еще могут быть продуктивными
  • Код, написанный 10 лет назад в PHP 3, до сих пор работает в PHP 5.3. Может потребоваться несколько незначительных настроек, но серьезные переписывания нужны редко.

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

Реализация пространства имен PHP

В отличие от C # и Java, PHP должен сохранять совместимость с кодом без пространства имен. Это было достигнуто, и вы можете выбрать, использовать пространства имен или нет. Однако, если вы используете PHP 5.3 (или выше), я бы порекомендовал их — даже если вы просто используете одно и то же имя во всем проекте.

Выбор namespaceuse Некоторые разработчики могут не согласиться, но это было бы так, независимо от того, как они были названы. ETOR

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

 
// PHP 5.3 beta static method call
echo ::App::Lib1::MyClass::WhoAmI();

// PHP 5.3 final static method call
echo AppLib1MyClass::WhoAmI();

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

Конечно, было бы здорово, если бы PHP использовал ‘.’ период для открытых методов, статических методов и пространств имен. Это сделало бы его совместимым с Java, C #, JavaScript, Python и многими другими языками. К сожалению, история PHP и обратная совместимость затрудняют это.

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

Связанное чтение: