Лучшие практики по использованию магических констант PHP - PullRequest
6 голосов
/ 26 ноября 2010

Каковы лучшие практики использования магических констант PHP, такие как __LINE__, __FILE__, __FUNCTION__, __CLASS__ и __METHOD__?

Например, я использую __LINE__и __CLASS__ чтобы найти ошибку SQL следующим образом:

$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());

Является ли это приемлемой практикой?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2010

Практика, которую вы показываете, имеет два недостатка:

  • Вы не показываете файл, в котором произошла ошибка - вам нужно иметь очень строгую файловую структуру, которая отображает классы в файлы 1: 1, чтобы это было полезно

  • __CLASS__ покажет вам неверный результат, если ошибка возникнет в унаследованном классе. Используйте get_class($this), чтобы получить текущий текущий класс.

Кроме того, использование этих констант вполне допустимо. Обратите внимание, что

  • __FUNCTION__ и __CLASS__ были добавлены в PHP 4.3

  • __METHOD__ доступно с версии PHP 5.0.0

  • __DIR__ и __NAMESPACE__ доступны с PHP 5.3.

* 1039 Docs *

1 голос
/ 26 ноября 2010

Единственный совет, который я могу дать, это то, что не все магические константы определены. Поэтому, если вы сомневаетесь, используйте if(defined('__MAGIC_CONSTANT__'))

1 голос
/ 26 ноября 2010

Назначение этих констант - отладка и ведение журнала. Это именно то, что вы делаете.

__FILE__ также можно использовать для относительных путей к файлам (например, dirname(__FILE__)).

...