Skip to main content

moregeek program

【web 开发基础】php 开发基础快速入门 (4)-php常量详解-多极客编程

前言

常量的介绍

在"常量"的广义概念是:'不变化的量'(例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)换言之,常量,在计算机技术方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。常量可区分为不同的类型,如:25、0为整型常量,6.8为实型常量,'a'、'b'为字符常量。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。对于'常量'的通俗比喻--"如同大山不被轻而易举地改变"(当然,地球上的重力加速度到海枯石烂也会改变;而人们使用的常量是时间不很漫长的那一段时期基本上不会改变的量。而真空状态中的光速是常量理论上不可改变,是常量)

在PHP中有常量和变量两个概念,常量是相对于变量来说的。常量一般用于一些数据计算中固定的数值, 例如数学的π= -3.141 592....可以定义为常量。常量是一个简单值的标识符,正如其名,在脚本执行期间一个常量一旦被定义, 就不能再改变或者取消定义。常量的作用域是全局的,可以在脚本的任何地方声明和访问到常量,这也是在应用上我们经常选择使用常量的主要原因。另外,虽然常量和变量都是PHP的存储单元,但常量声明的类型只能是标量数据( boolean、integer、 float 和string )。其实对于整型这种简单的数据类型常量来说,要比声明变量效率高一点,也节约空间。如果是复杂数据类型,例如字符串,效率就差不多。另外,常量可以避免因为错误或失误赋值而带来的运行错误,所以如果有不需要在程序运行过程中改变的量,我们首选常量。总之,在PHP中常量非常多见,不仅可以自定义常量使用,更主要的是几乎在每个PHP扩展中都默认提供了大量可使用的常量,而且PHP也提供了一些比较实用的魔术常量。

常量的定义和基本使用

声明常量和声明变量的方式是不同的,在PHP中是通过define()函数来定义常量.常量的命名与变量相似,也要遵循与变量相似,也要遵循PHP标识符的命名规则。另外,声明常量默认还跟变量一样大小写敏感,按照惯例常量名称总是大写的但是不要在常量前面加上“$” 符号

define0函数的格式如下:

boolean define(string name,mixedvalue[,bool case insensitive]) ;

//常量定义函数

此函数的第一个 参数为字符串类型的常量名,第二个参数为常量的值或是表达式,第三个参数是可选的。如果把第三个参数case_ insensitive 设为TRUE,则常数将会定义成不区分大小写。预设是区分大小写的。如果只想检查是否定义了某个常量,则用defined()函数。

常量的声明与使用:

<?php
define("TEST_INT", 100); //声明一个名TEST_INT的常量 值为100
//打印输出
echo TEST_INT;
echo '<br>';
define("TEST_FLOAT", 88.88); //声明一个名TEST_FLOAT的常量 值为浮点数88.88
//打印输出
echo TEST_FLOAT;
echo '<br>';

define("TEST_BOOL", true); //声明一个名TEST_BOOL的常量 值为true(布尔值)
//打印输出
echo TEST_BOOL;
echo '<br>';

define("TEST_STRING", "李白"); //声明一个名TEST_STRING的常量 值为字符串:李白
//打印输出
echo TEST_STRING;
echo '<br>';

define("TEST_STR", "李白", true); //声明一个名TEST_STRING的常量 值为字符串:李白 ,不区分大小
//打印输出
echo TEST_STR;
echo '<br>';
echo TEST_STR;
echo '<br>判断常量是否被定义<br>';

//判断一个常量是否被定义
if(defined('TEST_STR')){
echo TEST_STR;
}

执行结果如下:

【web 开发基础】php 开发基础快速入门 (4)-PHP常量详解_PHP

使用一个没有声明的常量常量名称会被解析为一个普通字符串,会比直接使用字符串慢将近8倍左右,所以在声明字符串时一定要加上单引号或双引号

常量与变量的区别

  1. 常量前面没有美元符号 ($)
  2. 常量只能用 define()函数定义,而不能通过赋值语句定义
  3. 常量可以不用理会变量范围的规则而在任何地方定义和访问
  4. 常量一旦被定义就不能被重新定义或者取消定义,直到脚本运行结束自动释放。常量的值只能是标量( boolean、integer、 float 和string这4种类型之一)

系统中的PHP预定义的常量

在PHP中,除了可以自己定义常量,PHP本身还预定义了一系列系统常量, 可以在程序中直接使用来完成一些特殊的功能。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才可使用,或者动态加载后,或者在编译PHP时已经包括进去了。这些分布在不同扩展模块中的预定义常量有多种不同的开头,决定了各种不同的类型。PHP内置一些在系统中常见的预定义常量如下:

PHP_OS:

常量值:UNIX或者WINNT等

作用:执行解析的操作系统名称

PHP_VERSION:

常量值:7.2.12等等

作用:当前PHP的版本

TRUE:

常量值:TRUE

作用:代表布尔值,真

FALSE:

常量值:FALSE

作用:代表布尔值,假

NULL:

常量值:NULL

作用:代表空值

DIRECTORY_SEPARATOR:

常量值:/或者\

作用:根据操作系统决定目录分隔符

PATH_SEPARATOR:

常量值:;或:

作用:根据操作系统决定环境变量的目录列表分隔符

E_ERROR:

常量值:1

作用:错误,导致PHP脚本运行终止

E_WARNING:

常量值:2

作用:警告,会有提示,不会导致PHP脚本终止运行

E_PARSE:

常量值:4

作用:解析错误,由程序解析器报告

E_NOTICE:

常量值:8

作用:非关键的错误,比如:变量未初始化等

M_PI:

常量值:3.1415926535898

作用:数学中π的值

<?php 
echo PHP_VERSION;
?>

执行结果:

【web 开发基础】php 开发基础快速入门 (4)-PHP常量详解_常量_02

PHP中除了预定义常量还有魔术常量,下面接着了解魔术常量具体内容

PHP中的魔术常量

PHP中还有8个常量会根据它们使用的位置改变而改变,这样的常量在PHP中被称为:魔术常量。比如:__LINE__的值就依赖于它在脚本中所处的行来决定.而且这些特殊的常量不区分大小写.具体如下:

__FILE__:

常量值:当前的文件名

作用:默认常量,是指PHP程序文件名及路径;在哪个文件中使用,就代表哪个文件名称

<?php
echo '该文件位于: " ' . __FILE__ . ' " ';
?>

__DIR__:

常量值:当前所在的目录

作用:文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增)

<?php
echo '该文件位于: " ' . __DIR__ . ' " ';
?>

__LINE__:

常量值:当前的行数

作用:默认常量,是指PHP程序的行数;在代码的哪行使用,就代表哪行的行号

<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>

__CLASS__:

常量值:当前的类名

作用:类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。:在哪个类中使用就代表哪个类的类名

<?php
class testClazz {
function out() {
echo '类名为:' . __CLASS__ . "<br>";
echo '对象的方法名为:' . __METHOD__ ;
}
}
$test = new testClazz();
$test->out();
?>

结果:

类名为:testClazz

对象的方法名为:testClazz::out

__TRAIT__:

常量值:Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

作用:Trait 的名字(PHP 5.4.0 新加)。代码块:自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

<?php
class ParentClazz {
public function test() {
echo 'test';
}
}

trait testTrait {
public function test() {
parent::test();
echo 'Trait';
}
}

class Child extends ParentClazz {
use testTrait;
}

$obj = new Child();
$obj->test();
?>

__METHOD__:

常量值:当前对象的方法名

作用:类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。在对象中的哪个方法中使用就代表哪个方法名

<?php
function testMethod(){
echo '方法名为:' . __METHOD__ ;
}
testMethod();
?>

__FUNCTION__:

常量值:当前的函数名

作用:在哪个函数中使用就代表哪个函数名

<?php
function testphp(){
echo '函数名为:' . __FUNCTION__ ;
}
testphp();
?>

__NAMESPACE__:

常量值:当前命名空间的名称(区分大小写)

作用:当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

<?php
namespace MCProject;
echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MCProject"
?>

注:魔术变量两边是双下划线,也是是说是两个下划线连在一起:"__",PHP中还有魔术方法虽然只有左边有下划线,但同样是双下划线

代码实践

预定义和魔术常量的基本用法如下:

<?php
echo "当前文件的路径:".__FILE__;
echo "</br>当前的行数:".__LINE__;
echo "</br>当前PHP的版本信息:".PHP_VERSION;
echo "</br>当前的操作系统:".PHP_OS;
?>

执行结果如下:

【web 开发基础】php 开发基础快速入门 (4)-PHP常量详解_字符串_03

©著作权归作者所有:来自51CTO博客作者迷彩编程的原创作品,请联系作者获取转载授权,否则将追究法律责任

【web 开发基础】php 开发基础快速入门 (2)-php的程序开发-多极客编程

前言PHP ( Hypertext Preprocessor,超文本预处理器)是一种被广泛应用开放源代码、多用途、运行在服务器端的脚本语言。在上一篇文章《​​【web 开发基础】php 开发基础快速入门 (1)-PHP 介绍及开发环境快速安装和基本使用介绍​​》中,我们介绍了PHP的优势和PHP集成开发环境的简单搭建以及浅尝了一下PHP代码的编写,写了一个hello world的程序。本文接着继续

php中几种常见的开发模式-多极客编程

设计模式六大原则 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象. 依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 单一职责原则:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 接口隔离原则:客户端不应该依赖它不需要的接

promise异步请求变成同步_crmeb中邦科技的博客-多极客编程

最近在写CRMEB OA管理系统的客户列表模块有个需求,保存客户并继续添加合同和保存合同并继续添加付款记录,这个页面跳转简单,但是比较难的是调接口后拿着接口返回的数据要同步到下一个页面,这一部分当时写的时候遇到的问题主要是:保存成功后页面已经跳转到下一个,但是保存接口返的客户id在下一个页面一直打印不出来,打印值为undefined。最后想了一下就是异步和同步的问题。使用Promise完美解决。1

【web 开发基础】php 开发基础快速入门 (3)-php程序符号标记和程序注释的使用及空白符详解-多极客编程

前言PHP开发基础开速入门系列《​【web 开发基础】php 开发基础快速入门 (1)-PHP 介绍及开发环境快速安装和基本使用介绍​》《​【web 开发基础】php 开发基础快速入门 (2)-PHP 的程序开发​》这是PHP开发基础快速入门的第三篇文章,前两篇文章介绍了PHP的大致用法,书接上回,之前的文章对PHP的开始结束标记有过简单描述,这次详细唠唠PHP的标记相关知识以及程序注释等内容PH

前端线上图片生成马赛克-多极客编程

前言说起图片的马赛克,可能一般都是由后端实现然后传递图片到前端,但是前端也是可以通过canvas来为图片加上马赛克的,下面就通过码上掘金来进行一个简单的实现。实现markup<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d0b4e30cd0f648fcbe675992ddcb90f1~tplv-k3u1fbpfcp-w

快速体验react开发基础入门指南-多极客编程

前言 大家好,我是CoderBin,本次整理了我学习react过程中的各部分的知识点,看完文本你将会学到 jsx的基本使用 使用脚手架创建项目 如何在React当中定义组件 React当中的事件绑定方式以及注意事项 关于react组件的三大核心属性及其运用 React组件的生命周期 ... 如果文中有不对、疑惑的地方,欢迎在评论区留言指正🌻 想深入学习的可以点击前往 --> React官

【web 开发基础】php 开发基础快速入门 (2)-php的程序开发-多极客编程

前言PHP ( Hypertext Preprocessor,超文本预处理器)是一种被广泛应用开放源代码、多用途、运行在服务器端的脚本语言。在上一篇文章《​​【web 开发基础】php 开发基础快速入门 (1)-PHP 介绍及开发环境快速安装和基本使用介绍​​》中,我们介绍了PHP的优势和PHP集成开发环境的简单搭建以及浅尝了一下PHP代码的编写,写了一个hello world的程序。本文接着继续

redux+react-redux 最新入门实战指南?-多极客编程

大家好,我是CoderBin 前言 本文将给大家带来redux和react-redux的快速使用,以理论+代码+案例的形式教大家如何在react中去使用状态管理,以实现数据的高效通信🚀 如果本文有不对、疑惑的地方,欢迎在评论区留言指正🌻 长文预警: 本文文字代码较多,请耐心观看,相信你会有所收获🍺 一、什么是 redux Redux 是 JavaScript 状态容器,提供可预测化的状态管理。可以

【web 开发基础】php 开发基础快速入门 (3)-php程序符号标记和程序注释的使用及空白符详解-多极客编程

前言PHP开发基础开速入门系列《​【web 开发基础】php 开发基础快速入门 (1)-PHP 介绍及开发环境快速安装和基本使用介绍​》《​【web 开发基础】php 开发基础快速入门 (2)-PHP 的程序开发​》这是PHP开发基础快速入门的第三篇文章,前两篇文章介绍了PHP的大致用法,书接上回,之前的文章对PHP的开始结束标记有过简单描述,这次详细唠唠PHP的标记相关知识以及程序注释等内容PH

css flex 布局的引入背景-多极客编程

Flexbox 布局(Flexible Box)模块(截至 2017 年 10 月的 W3C 候选推荐)旨在提供一种更有效的方式来布局、对齐和分配容器中 item 元素之间的空间,即使它们的大小未知和/或动态,这就是布局名称中 弹性 的由来。 flex 布局背后的主要思想是让容器能够改变其项目的宽度/高度(和顺序)以自适应地填充可用空间(主要是为了适应所有类型的显示设备和屏幕尺寸)。弹性容器扩展

巧用try、catch实现js代码加密-多极客编程

巧用try、catch实现JS代码加密本文分享一种奇特的JS代码加密解密方法。技术原理将JS代码加密,然后在try、catch错误捕捉语法中,用eval进行执行,能执行则表明解密成功,不能执行则意味着解密出错,此时会抛出错误,并由catch捕捉进行重新解密。源码解析加密部分:解密部分:完整源码/*加密部分*/ var source_string ='alert("JShaman提供专业的Ja