为什么要谨慎使用PHP中的常量?
Zend Framework文档中写道:常量包含数字字母字符和下划线,数字允许作为常量名。 常量名的所有字母必须大写。类常量必须通过 "const" 定义为类的成员,强烈不鼓励使用 "define" 定义的全局常量。
作为PHP的官方框架,为什么会有这样的要求?
让我们一起分析一下吧。
1. define容易产生意想不到的错误
PHP常量是定义后就不能修改和再次赋值。但是如果再次赋值会怎么样?
<?php define('C', 12345); define('C', 123); ?>
这段代码会报个notice错误。带来的后果是:在你定义之前,其它人要是定义了同名的常量,你可能真的不知道里面究竟是什么值。
2. 如何判断PHP常量是否被定义?判断方法易写错
<?php define('C', 12345); // 错误方法1,经常犯 if (isset(C)){……} // 错误方法2,经常犯 if (defined(C)){……} // 正确方法 if (defined('C')){……} ?>
3. 执行效率低
<?php define('FORUM_THEME',$forum['theme']); $this->display('/'.FORUM_THEME.'@Public:login'); // 系统会从整个执行流程中查找FORUM_THEME ?>
因为php处理常量的时候要进行多次查找,所以效率低。
总结:PHP常量的问题,在于PHP处理常量的方法过于宽松导致的,如果能够严格一些,就会避免很多的问题。在实际过程,能用变量就不要用常量,因为变量的效率高使用更加方便。
因此若非要使用常量或者类变量,可使用以下方法:
<?php class foo { const WEBSITE = "www.zhuyinghao.com"; protected $_forum_theme; function name() { echo WEBSITE; $this->_forum_theme = $forum['theme']; } function displace() { echo $this->_forum_theme; } } ?>
类名和函数名相同时的作用
在PHP 4中,类的构造函数需要和类名相同,子类的构造函数名与子类名相同,在子类里父类的构造函数不会自动执行。要在子类里执行父类的构造函数,必须执行类似以下语句:
$this->[父类的构造函数名()]
在 PHP 5.0 以上版本里,统一使用construct()作为构造函数,但仍兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 construct()函数,则construct() 函数优先。
用PHP EOL来替换/r/n进行换行
写程序时会经常用到换行,用PHP内置常量PHP_EOL来进行换行。
一个小小的换行,在不同的平台有着不同的实现。在unix世界换行就用\n来代替,但是windows为了体现他的不同,就用\r\n,更有意思的是在mac中用\r。因此unix系列用 \n,windows系列用 \r\n,mac用 \r。
因此系统会根据平台系统的不同,转换成不同的换行。如果要在浏览器中换行,就要使用PHP_EOL变量进行换行

常量也称为变量,一旦定义,其值在程序执行期间就不会改变。因此,我们可以将变量声明为引用固定值的常量。它也被称为文字。必须使用Const关键字来定义常量。语法C编程语言中使用的常量语法如下-consttypeVariableName;(or)consttype*VariableName;不同类型的常量在C编程语言中使用的不同类型的常量如下所示:整数常量-例如:1,0,34,4567浮点数常量-例如:0.0,156.89,23.456八进制和十六进制常量-例如:十六进制:0x2a,0xaa..八进制

常量和变量用于在编程中存储数据值。变量通常指的是可以随时间变化的值。而常量是一种变量类型,其值在程序执行期间不能被改变。在Python中只有六个内置常量可用,它们是False、True、None、NotImplemented、Ellipsis(...)和__debug__。除了这些常量之外,Python没有任何内置数据类型来存储常量值。示例下面演示了常量的示例-False=100输出SyntaxError:cannotassigntoFalseFalse是Python中的内置常量,用于存储布尔值

常量变量是其值固定且程序中只存在一个副本的变量。一旦你声明了一个常量变量并给它赋值,你就不能在整个程序中再次改变它的值。与其他语言不同,Java不直接支持常量。但是,你仍然可以通过声明一个变量为静态和final来创建一个常量。静态-一旦你声明了一个静态变量,它们将在编译时加载到内存中,即只有一个副本可用。Final-一旦你声明了一个final变量,就不能再修改它的值。因此,你可以通过将实例变量声明为静态和final来在Java中创建一个常量。示例 演示classData{&am

PHP是一种广泛应用于网页开发的服务器端脚本语言,它的灵活性和易用性使其成为许多开发人员的首选。然而,在使用PHP时,我们有时会遇到一些报错的情况。本篇文章将重点讨论"调用未定义的常量"错误,以及如何解决这个问题。一、问题描述当我们在代码中使用一个未定义的常量时,PHP会抛出一个致命错误,提示我们调用了一个未定义的常量。下面是一个常见的例子:echoMY_

PHP报错:使用未定义的常量作为属性名怎么办?在PHP开发中,我们经常会使用类和对象来组织和管理代码。在定义一个类的过程中,类的属性(即成员变量)起到了保存数据的重要作用。然而,当我们在使用属性时,有时会发生使用未定义的常量作为属性名的错误。本文将介绍这种错误的原因,并且提供几种解决方法。首先,让我们看一个简单的例子来演示这个问题。假设我们有一个名为"Per

学习基本数据类型常量的定义和初始化方法,需要具体代码示例在编程中,常常会用到各种基本数据类型,比如整型、浮点型、字符型等。在使用这些数据类型时,不仅需要了解它们的定义和用法,还需要知道如何定义和初始化它们的常量。本文将为大家介绍基本数据类型常量的定义和初始化方法,并给出具体的代码示例。整型常量的定义和初始化方法整型常量包括int、long、short和byt

FILTER_SANITIZE_SPECIAL_CHARS常量过滤HTML转义特殊字符。标志FILTER_FLAG_STRIP_LOW−剥离ASCII值低于32的字符FILTER_FLAG_STRIP_HIGH−剥离ASCII值高于32的字符FILTER_FLAG_ENCODE_HIGH−编码ASCII值高于32的字符返回值FILTER_SANITIZE_SPECIAL_CHARS常量不做任何操作。示例 演示&

PHP中的命名规范:如何使用下划线命名法命名常量和文件名在PHP编程中,良好的命名规范对于提高代码的可读性和可维护性非常重要。本文将介绍如何使用下划线命名法来命名常量和文件名,并通过代码示例来演示。常量的命名规范在PHP中,常量的命名通常全大写,并以下划线分隔单词。这种命名规范可以清晰地区分常量和变量,并且易于阅读和理解。以下是一些常见的常量命名示例:def


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Notepad++7.3.1
Easy-to-use and free code editor

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version
God-level code editing software (SublimeText3)
