Почему подчеркивает преобразованный в сепаратор каталогов в стандарте PSR-0?

StackOverflow https://stackoverflow.com//questions/11696219

  •  12-12-2019
  •  | 
  •  

Вопрос

PSR-0 ( https:///github.com/php-fig/fig-standards/blob/master/acpected/psr-0.md ) Стандарт указывает, что подчеркивание в имени класса должно быть преобразовано в сепаратор каталога в соответствующем файле.Имя.

Мне это не кажется хорошей идеей, поскольку она создает много ошибок, когда кто-то, кто не знает стандартный невинно использует подчеркивание в имени класса, и внезапно автозагрузчик не может найти класс и все рода странные ошибкиПоявляются (см. Этот проблему в стойке для примера: Symfony2.1 Ошибка отображения: class_parents () )

Так что я думаю, что должен быть какой-то разум (историческая совместимость с какой-то библиотекой?) Для этой «функции».Мой вопрос: Кто-нибудь знает, почему это было введено в стандарт PSR-0?

Это было полезно?

Решение

Подчеркивание использовались в то время, когда PHP еще не поддерживает пространства имен.«Правильный» организованный проект следует в соответствии с Конвенцией о наменных файлах так же, как структура каталогов.

Это всего лишь одно общее «правило» для организации файлов в проекте.

Так что, если у вас есть структура каталога:

root
  Name
    Package
      MyClass.php
.

Люди делали:

class Name_Package_MyClass {}
.

Но теперь, когда у нас есть пространства имен, это становится:

namespace Name\Package;

class MyClass { }
.

Это просто рекомендация в стиле кодирования, который гарантирует, что каждый делает то же самое.

Так что, каким PSR-0 имеет карту как старый, так и новый стиль пространства имен на имя файла.

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

PHP поддерживает пространства имен с версии 5.3, ранее наиболее распространенной конвенцией было использование подчеркивания в качестве сепаратора пространства имен (Directory), e.g.: My_Project_ClassName был отображен в виде /path/to/my/My/Project/ClassName.Я считаю, что совместимость назад является основной причиной.

Имейте в виду, что стандарт PSR-0 был написан для нескольких конкретных проектов, а не обязательно лучший вариант для вашего собственного проекта.Как говорится на их сайте: «Если другие люди хотят принять то, что мы делаем, они могут сделать это, но это не цель».PSR-0 очень ограничительный, я бы не решил использовать его только потому, что другие люди.Подумайте о том, что вы на самом деле хотите от вашего проекта, и будет ли это полезным для вас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top