Лучшие практики для использования волшебных констант PHP

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

  •  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__'))

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