Полное имя, если мы должны использовать :: class

С Symfony я привык использовать преобразователь имен классов ::class (начиная с php5.5):

use AppBundle\Entity\Product;

// ...

$resolver->setDefaults(array(
    'data_class' => Product::class
));

вместо строки FQN:

$resolver->setDefaults(array(
    'data_class' => 'AppBundle\Entity\Product'
));

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

Тем не менее, я вижу не так много примеров этой практики в официальных документах. Поэтому мне интересно, связано ли это с проблемой совместимости (‹ php5.5) или потому, что было бы нехорошо систематически импортировать все классы, на которые нам нужно ссылаться.

Мой вопрос: рекомендуется ли использовать ::class везде, где нам нужно ссылаться на FQN?


person Pierre de LESPINAY    schedule 06.06.2016    source источник
comment
как ты сказал is because of the compatibility concern (< php5.5)   -  person Matteo    schedule 06.06.2016
comment
Спасибо за ваш комментарий. Я не понимаю, почему мой вопрос заслуживает закрытия и -1, хотя   -  person Pierre de LESPINAY    schedule 06.06.2016
comment
Хорошие практики очень часто основаны на мнении, но помимо комментария Маттео о совместимости (я с ним согласен), я думаю, вы должны спросить себя, почему бы не использовать его. Я вижу только преимущества использования распознавателя имен классов, например, если вы меняете пространство имен класса, вы не вынуждены менять его везде в коде (я использую ::class везде, а не в сущностях).   -  person gp_sflover    schedule 06.06.2016
comment
Я бы сказал, что лучшая практика основана на мнении, хорошая практика здесь больше ищет возможные предостережения о практике, помимо проблемы совместимости, о которой я упоминал в вопросе.   -  person Pierre de LESPINAY    schedule 06.06.2016
comment
Я тоже не думаю, что это заслуживает -1, поэтому я поставил +1.   -  person Alvin Bunk    schedule 06.06.2016


Ответы (1)


Ответ, кажется, таков:

Помимо проблемы совместимости с php‹5.5, ничто не мешает использовать преобразователь имен ::class везде, где нам нужно.

person Pierre de LESPINAY    schedule 08.06.2016