批改状态:合格
老师批语:注意常量要使用大写字母加下滑线进行命名!一定要遵循命名规范!
作用域的意义:
变量的生效范围;
查找变量的工具。
| 作用域分类 | 范围 |
|---|---|
| 全局作用域 | 访问全局作用域有两种方法:1.需使用global关键字,表示声明需要到外部去寻找; 2.使用超全局变量$GLOBALS来访问(推荐) |
| 函数作用域 | 函数会创建出一个独立的作用域,只能在函数内部访问,也叫私有变量,不能直接访问外部的变量。 |
<?php// 查看每个脚本中预定义的超全局变量echo '<pre>'.print_r($GLOBALS,true);//超全局变量查看文件路径:echo $_SERVER['REQUEST_URL'];echo $_SERVER['SCRIPT_FILENAME'];// 超全局变量, 不受作用域限制,可以在函数中直接访问$siteName = "php中文网";function getInfo(){// 超全局变量$GLOBALS['键名']return $GLOBALS['siteName'];}echo getInfo();
| 常量的定义及访问 | 代码及功能 |
|---|---|
| 常量的定义方式 | 定义常量有2种方式:1.使用const关键字;2.使用define()函数;注意,类中的常量只能够用const定义 |
| 常量的访问方式 | 访问常量也有两种方式:1.直接通过常量名XXXXCONST_NAME;2.constant(‘XXXXCONST_NAME;’,如常量名为空的常量名称只能通过constant()调取) |
//关键字: constconst APP_PATH = '/phpstudy_pro';// 函数definedefine('APP_NAME', '客户管理系统');//类常量只允许用constclass User{const NATION = 'CHINA';}get_defined_constants(true)
//查看哪些可用的定义的常量print_r(get_defined_constants(true));//查看用户自定义的常量print_r(get_defined_constants(true)['user']);
常量值被定义后,在脚本的其他任何地方都不能被改变。
常量定义的时候必须初始化
常量前没有$
常量不受作用域限制,的作用域是全局,一旦创建,就不能删除,用unset也不行
常量的命名规范一般全部用大写表示,中间断句分词可以用_下划线连接
| 常量名 | 功能 |
|---|---|
| PHP_VERSION | 当前PHP版本号 |
| PHP_OS_FAMILY | 操作系统 |
| PHP_INT_MAX | 最大整数 |
| PHP_FLOAT_MAX | 最大浮点数 |
| DIRECTORY_SEPARATOR | 目录分隔符(是/还是\不同的系统环境不一样) |
一般常量的值都是不变的,魔术常量却是根据系统自动改变,它与变量的区别就是系统自动生成,不是由用户指定和修改的
| 魔术常量 | 功能 |
|---|---|
| LINE | 当前行号 |
| FILE | 文件的完整路径和文件名 |
| DIR | 文件所在目录,目录的值不包含最后的/或者\ |
| FUNCTION | 当前的函数名称 |
| CLASS | 当前类名称 |
| TRAIT | 当前Trait名称 |
| METHOD | 当前类方法名称 |
| NAMESPACE | 当前命名空间名称 |
在全局空间中的成员(常量、类、函数、接口)需要具有唯一性。不能重复命令
命名空间namespace,就是来解决这一问题的。
<?php// 命名空间// 第一个命名空间,定义了名为model的模型,内容是模型1'namespace names1 {const model = '模型1';}// 第而个命名空间,定义了同样名为model的模型,但是内容是模型2'namespace names2 {const model = '模型2';}// 全局空间,默认空间没有名称// 同样都是名字为model的模型,但是在全局钟通过加入了命名空间区分开了namespace {echo \names1\model;echo '<hr>';echo \names2\model;}
//查询所有的过滤器foreach (filter_list() as $filter) {echo $filter . ' => ' . filter_id($filter) . '<br>';}
<?php//案例1 过滤int范围$rent = 3000;$options = ['options' => ['min_range' => 800, 'max_range' => 20000]];echo '案例1,过滤int范围结果:';var_dump(filter_var($rent, FILTER_VALIDATE_INT, $options));echo '<hr>';//案例2 过滤浮点格式$price = 12.5;echo '案例2,过滤浮点格式结果:';var_dump(filter_var($price = 12.5, FILTER_VALIDATE_FLOAT));echo '<hr>';//案例3 过滤email格式$email = 'myexxxx@qq.com';echo '案例3,过滤email格式结果:';var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));echo '<hr>';//案例4 过滤array格式$arr = ['lat' => 22.025, 'lng' => 133.556];echo '案例4,过滤array格式结果:';var_dump(filter_var_array($arr, FILTER_VALIDATE_FLOAT));echo '<hr>';//案例5 过滤多个外部变量$formdata = ['username' => FILTER_SANITIZE_STRING,'email' => FILTER_VALIDATE_EMAIL,'age' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 18, 'max_range' => 120]],'sex' => FILTER_VALIDATE_BOOLEAN,];echo '案例5,表单结果:';var_dump(filter_input_array(INPUT_GET, $formdata));echo '<hr>';

应用场景如验证年龄范围、性别范围、邮箱是否正确等。
| 过滤器 | 功能 |
|---|---|
| filter_var() | 获取单个变量,进行过滤 |
| filter_var_array | 获取多个变量,进行过滤 |
| filter_input_array() | 获取外部多个输入,并进行过滤。外部变量类型: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV等 |
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号