目錄
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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++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_

一文帶你搞懂Python中變數與常數 一文帶你搞懂Python中變數與常數 Jul 25, 2023 pm 02:15 PM

本文基於Python基礎,主要介紹了Python基礎中變數和常數的區別,對於變數的用法做了詳細的講解,用豐富的案例 ,程式碼效果圖的展示幫助大家更好理解 。

基本資料型別常數的定義和初始化方法學習指南 基本資料型別常數的定義和初始化方法學習指南 Jan 05, 2024 pm 02:08 PM

學習基本資料型別常數的定義和初始化方法,需要具體程式碼範例在程式設計中,常常會用到各種基本資料型別,例如整數、浮點型、字元型等。在使用這些資料類型時,不僅需要了解它們的定義和用法,還需要知道如何定義和初始化它們的常數。本文將為大家介紹基本資料型態常數的定義和初始化方法,並給出具體的程式碼範例。整數常數的定義和初始化方法整數常數包括int、long、short和byt

PHP報錯:使用未定義的常數當屬性名怎麼辦? PHP報錯:使用未定義的常數當屬性名怎麼辦? Aug 17, 2023 pm 02:13 PM

PHP報錯:使用未定義的常數當屬性名怎麼辦?在PHP開發中,我們經常使用類別和物件來組織和管理程式碼。在定義一個類別的過程中,類別的屬性(即成員變數)扮演了保存資料的重要角色。然而,當我們在使用屬性時,有時會發生使用未定義的常數作為屬性名稱的錯誤。本文將介紹這種錯誤的原因,並且提供幾種解決方法。首先,讓我們來看一個簡單的例子來示範這個問題。假設我們有一個名為"Per

PHP中的命名規格:如何使用底線命名法命名常數和檔案名 PHP中的命名規格:如何使用底線命名法命名常數和檔案名 Jul 30, 2023 am 10:36 AM

PHP中的命名規範:如何使用下劃線命名法命名常數和檔案名稱在PHP程式設計中,良好的命名規範對於提高程式碼的可讀性和可維護性非常重要。本文將介紹如何使用下劃線命名法來命名常數和檔案名,並透過程式碼範例來示範。常數的命名規範在PHP中,常數的命名通常全大寫,並以以下方式劃線分隔單字。這種命名規範可以清晰地區分常數和變量,並且易於閱讀和理解。以下是一些常見的常數命名範例:def

See all articles