PHP开发基础教程之常量
概念
常量可以理解为:长久不变的值,常量值被定义后,在脚本的其他任何地方都不能被改变。
一、常量组成
常量的书写形式为 define(常量名,常量)
注:
常量名可以小写,但是通常大写
常量名可以不加引号,但是通常加上引号。
在字符串中调用常量的时候,必须在引号外面
常量名建议只用字母和下划线
我们来定义和调用一个常量:
实例:
<?php
//定义一个常量
define('Name','PHP.com');
//正确的调用方式
echo '我们是'.Name;
echo '<br/>';
//错误的调用方式
echo '我们是Name';
?>接下来,我们来验证下关于常量的几个说法
实例:
<?php
//其实可以小写,但是不好区分出来,所以习惯上大家都大写
define('age',27);
echo age;
//常量可以在外面不加引号
define(A,'安徽省');
echo A;
//只能用于标量,用于其他会报错,例如数组
define('HF',array(1,2,3));
echo HF;
?>注1:常量定义是未加引号,可以正常输出,但是PHP会提醒我们定义不规范,此处Ntice
可以通过修改PHP配置文件消除,各位有兴趣的话,可以自己搜索,尝试解决。
注2:前面提到的七种数据类型,还可以分为三大类
标量数据类型:布尔型、整型、浮点型、字符串
复合数据类型:数组、对象
特殊数据类型:NUll、资源型、回调函数
注3:常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
二、部分内置常量
系统还为我们准备了一些内置的常量。这些常量都是规定好的。我们先熟悉几个,还有更多的系统常量我们学习完上册,入门后再慢慢的增加和学习。
常量名  | 说明  | 
__LINE__  | 当前所在的行  | 
__FILE__  |    当前文件在服务器的路径  | 
__FUNCTIOIN__  | 当前函数名  | 
__CLASS__  | 当前类名  | 
__METHOD__  | 
 当前成员方法名                         | 
PHP_OS  | PHP运行的操作系统  | 
PHP_VERSION  | 当前PHP的版本  | 
__TRAIT__  | Trait 的名字,php5.4新加  | 
__DIR__  | 文件所在的目录  | 
__NAMESPACE__  | 当前命名空间的名称(区分大小写)  | 
实例:
<?php //输出当前所在行 echo __LINE__; echo "<br/>"; //输出当前文件所在服务器的路径 echo __FILE__; echo "<br/>"; //输出当前PHP运行的操作系统 echo PHP_OS; ?>
注:其他几个,大家可以尝试输出看看,有几个还没有学到,后面章节学到再详细介绍
三、利用defined()函数来做安全机制
此处知识,暂时只做了解。学习完函数后,再来看本部份代码也可以。
defined()我们来学习这种用法,主是是为了防止其他人绕过安全检查文件。
函数:defined(常量)
功能:向函数的括号后面传入常量,如果常量定义了就返回true,否则返回false
假设情况:
我们有一套在线电子商城的软件需要付钱,检查是否付费是通过对软件授权检查来完成的,而文件version.php中就有检查授权的功能,我们在软件中规定,没有授权检查文件version.php就不能使用这个软件。所有的代码都包含了version.php。并且为了防止有人盗版,我还可以把version.php的代码进行了加密。
我们有两个文件:
一个文件中间有版本号,版本声明和授权声明。文件名为version.php
一个文件中有具体的业务功能。例如:用户注册、登陆等,文件名为users.php
我们该怎么做呢?——也就是说不包含 version.php文件就不让,执行users.php之后的代码。
我们来实验:
1.version.php文件
代码如下:
<?php
//此处是检查是否是否授权的业务部份代码xxxx
define('AUTH',true);
//略过模拟代码xxx行
?>2.ser.php
代码如下:
<?php
//尝试将include 'version.php'这一行代码注释后再执行看看,对比结果
include 'version.php';
if(!defined('AUTH')){
    echo '非法!非法!你尝试跳过授权文件';
    exit;
}结果可知:version.php必须要包含 ,不然不会显示后面的echo '用户注册';
注:
函数:include('传入文件路径和文件名')
功能:这个函数的功能是传入指定路径的文件,让PHP包含进来执行
后面会详细解释inclde
			
									
									
									
									
									
									
									
									
									
									
									
									
  
            
        
huài习惯
初学者用的PHPStudy,define(A,'安徽');中的A不加引号会报错。
7年前 添加回复 0