Когда использовать или не использовать символы в PHP - PullRequest
0 голосов
/ 28 марта 2010

Я читаю книгу по PHP, где автор говорит, что символов следует избегать, за исключением случаев, когда их можно использовать. Очень информативный материал, если бы он мог только разрабатывать или приводить примеры кода, но он этого не делает.

Может ли кто-нибудь из опытной группы PHP привести мне пример того, что это за символы, и когда имеет смысл их использовать или нет. Я ищу пример кода, который мог бы обернуть мою голову, так как я не совсем понимаю его на простом английском языке. Код для меня более простой английский.

Edit:

Он говорит, что вы можете определить строку как «символ», который сделает эту строку глобальной и постоянной, но это полезно для безопасности, поскольку она постоянна и не может быть изменена по ошибке или намеренно. Я ищу конкретные примеры использования этих символов.

1 Ответ

6 голосов
/ 28 марта 2010

Полагаю, вы имеете в виду Константы ?

Одна большая причина против использования таких в PHP заключается в том, что если константа не была определена, PHP будет интерпретировать ее как строковое значение и выдавать только уведомление, а не фатальную ошибку, как это, по моему скромному мнению, следует.

define("NUMBER_OF_PAGES", 1);

echo NUMBER_OF_PAGES;  // outputs "1"

echo NUMBR_OF_PAGES;   // outputs literally "NUMBER_OF_PAGES" and throws 
                       // Notice: Use of undefined constant NUMBR_OF_PAGES - 
                       // assumed 'NUMBR_OF_PAGES' in xyz

// constant() is a workaround but it takes away a lot 
// of a constant's elegance IMO:

echo constant("NUMBER_OF_PAGES"); // Returns "1"
echo constant("NUMBR_OF_PAGES"); // Returns null

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

Чем чище ваше приложение, тем меньше проблем с этим становится, потому что становится возможным иметь дело с (и замечать) сообщениями уровня E_NOTICE. Тем не менее, неопределенная константа должна быть фатальной ошибкой в ​​моем уме, и я считаю это ошибкой проектирования.

Среды IDE с функциями поиска могут несколько облегчить проблему и помочь избежать опечаток.

Существует также функция constant () , которая будет возвращать NULL, если ей присвоено несуществующее имя константы. (См. Код выше.)

Примеры использования бетона:

Константы часто используются для определения текущего пути и / или URL:

define("APP_WEBROOT", "http://www.mydomain.com/appname");
define("APP_WEBROOT_PATH", "/var/www/mydomain/appname");

или для определения глобальных настроек:

define("MAX_PAGES", 100);
define("MAX_ITEMS_PER_PAGE", 250);
...