Лучшие практики для использования волшебных констант PHP
-
28-09-2019 - |
Вопрос
Каковы лучшие практики для использования магических констант PHP, таких как __LINE__
, __FILE__
, __FUNCTION__
, __CLASS__
и __METHOD__
?
Например, я использую __LINE__
и __CLASS__
Чтобы найти ошибку SQL, как это:
$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());
Это приемлемая практика?
Решение
Практика, которую вы показываете, имеет две недостатки:
Вы не показываете файл, ошибка возникает - вы должны иметь очень Строгая файловая структура, которая отображает классы к файлам 1: 1 для этого, чтобы быть полезным
__CLASS__
покажет вам неправильный результат, если ошибка возникает в унаследованном классе. Использоватьget_class($this)
получить фактический текущий класс.
Кроме того, использование этих констант совершенно приемлемо. Обратите внимание, что
__FUNCTION__
и__CLASS__
были добавлены в PHP 4.3__METHOD__
доступен с PHP 5.0.0__DIR__
и__NAMESPACE__
доступны с PHP 5.3.
Другие советы
Целью этих констант отладка и регистрация. Это именно то, что вы делаете.
__FILE__
также можно использовать для относительных путей файлов (например, dirname(__FILE__)
).
Единственный совет, который я могу дать, это то, что не все магические константы определены. Так, когда сомневаетесь, используйте if(defined('__MAGIC_CONSTANT__'))