목차
1. define容易产生意想不到的错误
2. 如何判断PHP常量是否被定义?判断方法易写错
3. 执行效率低
类名和函数名相同时的作用
用PHP EOL来替换/r/n进行换行
백엔드 개발 PHP 튜토리얼 PHP常量使用的几个需要注意的地方_PHP教程

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

Jul 13, 2016 am 10:33 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变量进行换行

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/752544.htmlTechArticle为什么要谨慎使用PHP中的常量? Zend Framework文档中写道:常量包含数字字母字符和下划线,数字允许作为常量名。 常量名的所有字母必须大...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요? C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요? Aug 28, 2023 pm 10:45 PM

C언어에서 상수란 무엇인가요? 예를 들어주실 수 있나요?

Python에서 상수를 만드는 방법은 무엇입니까? Python에서 상수를 만드는 방법은 무엇입니까? Aug 29, 2023 pm 05:17 PM

Python에서 상수를 만드는 방법은 무엇입니까?

Java에서는 final 키워드만 사용하여 상수를 정의할 수 있나요? Java에서는 final 키워드만 사용하여 상수를 정의할 수 있나요? Sep 20, 2023 pm 04:17 PM

Java에서는 final 키워드만 사용하여 상수를 정의할 수 있나요?

PHP 오류: 정의되지 않은 상수를 호출할 때 문제를 해결하는 방법은 무엇입니까? PHP 오류: 정의되지 않은 상수를 호출할 때 문제를 해결하는 방법은 무엇입니까? Aug 26, 2023 pm 03:39 PM

PHP 오류: 정의되지 않은 상수를 호출할 때 문제를 해결하는 방법은 무엇입니까?

PHP 오류: 정의되지 않은 상수를 속성 이름으로 사용하는 경우 어떻게 해야 합니까? PHP 오류: 정의되지 않은 상수를 속성 이름으로 사용하는 경우 어떻게 해야 합니까? Aug 17, 2023 pm 02:13 PM

PHP 오류: 정의되지 않은 상수를 속성 이름으로 사용하는 경우 어떻게 해야 합니까?

기본 데이터형 상수 정의 및 초기화 방법 학습 가이드 기본 데이터형 상수 정의 및 초기화 방법 학습 가이드 Jan 05, 2024 pm 02:08 PM

기본 데이터형 상수 정의 및 초기화 방법 학습 가이드

PHP의 FILTER_SANITIZE_SPECIAL_CHARS 상수 PHP의 FILTER_SANITIZE_SPECIAL_CHARS 상수 Aug 20, 2023 pm 09:58 PM

PHP의 FILTER_SANITIZE_SPECIAL_CHARS 상수

PHP의 명명 규칙: 밑줄 명명법을 사용하여 상수 및 파일 이름을 지정하는 방법 PHP의 명명 규칙: 밑줄 명명법을 사용하여 상수 및 파일 이름을 지정하는 방법 Jul 30, 2023 am 10:36 AM

PHP의 명명 규칙: 밑줄 명명법을 사용하여 상수 및 파일 이름을 지정하는 방법

See all articles