Разница между :: class vs :: className () в Yii2?

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

я не уверен, но я думаю ..

  • "MyClass::className()" также приводит к загрузке этого файла класса (его функции Yii, тело которой просто get_called_class())

  • "MyClass::class" я думаю, что это свойство нативного класса этого php не загружает файл php класса и просто возвращает его имя на основе в текущем пространстве имен или use.

Дай мне знать, если я прав? или выделите свои знания, пожалуйста.

Есть много мест, где нам просто нужно полное имя класса, даже если оно не будет использоваться в этот раз. но я также не люблю помещать жестко закодированные строки (из-за жесткого рефакторинга)

7 голосов | спросил dev.meghraj 14 J000000Thursday16 2016, 18:20:33

2 ответа


0

Да, я только что обнаружил, что был прав.

Свойство собственного класса PHP - это экономия производительности .. (PHP 5.5 +)

см. здесь http: //php.net/manual/en/language.oop5.basic.php#language.oop5.basic.class.class.name

так что это не приводит к загрузке файла класса, поэтому, даже если класс не существует, он вернет полное имя класса

  

Примечание. Разрешение имени класса с использованием :: class - время компиляции.   преобразование. Это означает, что в то время строка имени класса   создал автозагрузку еще не произошло. Как следствие, имена классов   раскрываются, даже если класс не существует. Ошибка не выдается в   этот случай.

ответил dev.meghraj 14 J000000Thursday16 2016, 18:52:56
0

get_called_class () предназначен для использования в статических методах.

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

Более важно смотреть на производительность в вашем собственном коде. Проверьте и поймите эти ссылки для настройки производительности для Yii 2.0: Yii2-Docs : Настройка производительности и Yii2 -Docs: отложенная загрузка и активная загрузка

ответил devOp 14 J000000Thursday16 2016, 18:40:09

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132