bre*_*ett 0 php syntax symbols
我正在阅读一本PHP书,其中作者说应该避免使用符号,除非它们有效使用它们.非常有用的东西,如果他只能详细说明或给出代码示例,但他没有.
来自经验丰富的PHP群的人能否给我一个这些符号是什么的例子,以及什么时候使用它们是有意义的.我正在寻找一个代码示例,我可以解决这个问题,因为我不会用简单的英语来理解它.代码对我来说更简单英语.
编辑:
他说你可以将一个字符串定义为一个'符号',这将使这个字符串全局和不变,但它对安全性有好处,因为它是常量,不能被错误地或故意地改变.我正在寻找使用这些符号的具体例子.
我假设你的意思是常数?
反对在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
Run Code Online (Sandbox Code Playgroud)
这使得常量的使用有点容易出错,特别是在使用不完美的编码实践触发数十或数百个E_NOTICE消息的旧应用程序中(但没有任何地方接近使用未定义常量那么糟糕)并且难以使用检测错误.
应用程序越干净,问题就越少,因为处理(并注意到)E_NOTICE级别的消息变得可能.不过,一个未定义的常量应该是我心中的致命错误,我认为这是一个设计错误.
具有查找功能的IDE可以在一定程度上缓解问题,并有助于避免拼写错误.
如果给定一个不存在的常量名,还会有函数constant()返回NULL.(参见上面的代码.)
具体用法示例:
常量通常用于定义当前路径和/或URL:
define("APP_WEBROOT", "http://www.mydomain.com/appname");
define("APP_WEBROOT_PATH", "/var/www/mydomain/appname");
Run Code Online (Sandbox Code Playgroud)
或者定义全局设置:
define("MAX_PAGES", 100);
define("MAX_ITEMS_PER_PAGE", 250);
Run Code Online (Sandbox Code Playgroud)