目录
1. define容易产生意想不到的错误
2. 如何判断PHP常量是否被定义?判断方法易写错
3. 执行效率低
类名和函数名相同时的作用
用PHP EOL来替换/r/n进行换行
首页 php教程 php手册 PHP常量使用的几个需要注意的地方

PHP常量使用的几个需要注意的地方

Jun 13, 2016 am 09:38 AM
php内核 常量

为什么要谨慎使用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变量进行换行

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C语言中的常量是什么,可以举一个例子吗? C语言中的常量是什么,可以举一个例子吗? Aug 28, 2023 pm 10:45 PM

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

如何在Python中创建一个常量? 如何在Python中创建一个常量? Aug 29, 2023 pm 05:17 PM

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

在Java中,仅使用final关键字可以定义一个常量吗? 在Java中,仅使用final关键字可以定义一个常量吗? Sep 20, 2023 pm 04:17 PM

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

PHP报错:调用未定义的常量怎么解决? PHP报错:调用未定义的常量怎么解决? Aug 26, 2023 pm 03:39 PM

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

PHP报错:使用未定义的常量作为属性名怎么办? PHP报错:使用未定义的常量作为属性名怎么办? Aug 17, 2023 pm 02:13 PM

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

基本数据类型常量的定义和初始化方法学习指南 基本数据类型常量的定义和初始化方法学习指南 Jan 05, 2024 pm 02:08 PM

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

PHP中的命名规范:如何使用下划线命名法命名常量和文件名 PHP中的命名规范:如何使用下划线命名法命名常量和文件名 Jul 30, 2023 am 10:36 AM

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

PHP中的FILTER_SANITIZE_SPECIAL_CHARS常量 PHP中的FILTER_SANITIZE_SPECIAL_CHARS常量 Aug 20, 2023 pm 09:58 PM

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常量不做任何操作。示例 演示&

See all articles