批改状态:合格
老师批语:这些表格和文本, 你应该用自己的语言进行总结和整理, 加上自己的理解, 尽可能不要照抄
| 序号 | 特征 |
|---|---|
| 1 | 常量前面没有美元符号$ |
| 2 | 常量创建时必须初始化 |
| 3 | 常量禁止更新和删除 |
| 4 | 常量不受作用域限制 |
| 5 | 推荐使用大写字母加下划线命名 |
| 序号 | 定义方式 | 描述 |
|---|---|---|
| 1 | get_defined_constants() |
查看系统所有常量 |
| 2 | defined() |
检测常量是否存在 |
| 3 | define() |
创建常量 |
| 4 | const 关键字 |
创建常量 |
| 5 | constant() |
获取常量值 |
get_defined_constants(true): 常量分组打印,自定义常量在user分组defined(): 返回布尔值预定义常量非常多,有许多与具体扩展相关,如 PDO, 这里仅列出系统级常用的:
| 序号 | 预定义常量 | 描述 |
|---|---|---|
| 1 | PHP_VERSION |
PHP 版本 |
| 2 | PHP_MAXPATHLEN |
PHP 路径最大长度:1024 |
| 3 | PHP_OS_FAMILY |
操作系统:Windows/Darwin/Linux |
| 4 | PHP_SAPI |
web 服务器与 php 之间接口: apache2handler |
| 5 | PHP_EOL |
行尾结束符 |
| 6 | PHP_INT_MAX |
最大整数: 9223372036854775807 |
| 7 | PHP_INT_MIN |
最小整数: -9223372036854775808 |
| 8 | PHP_INT_SIZE |
整数宽度: 8 |
| 9 | PHP_FLOAT_MAX |
最大浮点数:1.7976931348623E+308 |
| 10 | PHP_FLOAT_MIN |
整小浮点数: 2.2250738585072E-308 |
| 11 | DEFAULT_INCLUDE_PATH |
默认 PHP 命令路径 |
| 12 | PHP_EXTENSION_DIR |
默认 PHP 扩展路径 |
| 13 | E_ERROR |
运行时错误: 致命中断 |
| 14 | E_PARSE |
语法解析错误: 致命中断 |
| 15 | E_NOTICE |
运行时提示: 不中断 |
| 16 | E_WARNING |
运行时警告: 不中断 |
| 17 | E_ALL |
所有级别错误(除E_STRICT) |
| 18 | E_STRICT |
更加严格的错误处理机制,高于E_ALL |
| 19 | TRUE |
布尔真 |
| 20 | FALSE |
布尔假 |
| 21 | NULL |
空 |
| 22 | DIRECTORY_SEPARATOR |
目录分隔符 |
<?php# 定义常量// define()函数define('LECTURE', '朱老师');// const 关键字const COURSE = 'PHP';// 常量不受作用域限制function test1(){echo LECTURE . '教: ' . COURSE . '<br>';define('SEX', '男');echo SEX . '<br>';// const不能用在函数中// const AGE = 30;// echo AGE;}test1();echo '<hr>';// 流程控制中,define能用, const不能用if (true) {define('EMAIL', 'admin@php.cn');// const EMAIL = 'admin@php.cn';// echo EMAIL;}// const用在类中,创建类常量class Demo{const HELLO = 'php.cn';// define('A', 100);}echo Demo::HELLO.'<br>';// echo Demo::A.'<br>';// 常量通常只允许用标量进行初始化// 标量: 单值变量, 字符串, 数值,布尔, null// php7.0+支持数组初始化常量const DB_LINKS = ['host'=>'localhost','username'=>'root','password'=>'root','charset'=>'utf8',];echo '<pre>'.print_r(DB_LINKS,true).'</pre>';// constant()echo constant('LECTURE'). '<br>';echo LECTURE. '<br>';$constantName = 'EMAIL';echo constant($constantName);echo '<hr>';define('USER_NAME', '其实我也是一个常量');define('', '其实我也是一个常量');echo '';echo constant('');
| 序号 | 魔术常量 | 描述 |
|---|---|---|
| 1 | __LINE__ |
文件中的当前行号 |
| 2 | __FILE__ |
文件的完整路径和文件名 |
| 3 | __DIR__ |
文件所在目录 |
| 4 | __FUNCTION__ |
当前的函数名称 |
| 5 | __CLASS__ |
当前类名称 |
| 6 | __TRAIT__ |
当前Trait名称 |
| 7 | __METHOD__ |
当前类方法名称 |
| 8 | __NAMESPACE__ |
当前命名空间名称 |
几乎所有的 Web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,您能够确保应用程序获得正确的输入类型。
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | filter_var() | 通过一个指定的过滤器来过滤单一的变量 |
| 2 | filter_var_array() | 通过相同的或不同的过滤器来过滤多个变量 |
| 3 | filter_input | 获取一个输入变量,并对它进行过滤 |
| 4 | filter_input_array | 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤 |
| 5 | filter_ has_var() | 检测是否存在指定的外部变量 |
<?php$filters = array("name" => array("filter"=>FILTER_SANITIZE_STRING),"age" => array("filter"=>FILTER_VALIDATE_INT,"options"=>array("min_range"=>1,"max_range"=>120)),"email"=> FILTER_VALIDATE_EMAIL,);$result = filter_input_array(INPUT_GET, $filters);if (!$result["age"]){echo("Age must be a number between 1 and 120.<br />");}elseif(!$result["email"]){echo("E-Mail is not valid.<br />");}else{echo("User input is valid");}?>
例子解释:
上面的示例有三个通过 “GET” 方法传送的输入变量 (name, age and email)
设置一个数组,其中包含了输入变量的名称,以及用于指定的输入变量的过滤器
调用 filter_input_array 函数,参数包括 GET 输入变量及刚才设置的数组
检测 $result 变量中的 “age” 和 “email” 变量是否有非法的输入。(如果存在非法输入,)
| 序号 | 作用域 | 描述 |
|---|---|---|
| 1 | 函数作用域 | 使用function关键字创建的作用域 |
| 2 | 全局作用域 | 函数之外的变量生效范围 |
| 序号 | 变量类型 | 描述 |
|---|---|---|
| 1 | 私有变量 | 函数中定义的变量 |
| 2 | 全局变量 | 函数之外定义的变量 |
| 3 | 超全局变量 | 也叫预定义变量,访问不受作用域限制 |
| 序号 | 变量名 | 描述 |
|---|---|---|
| 1 | $GLOBALS |
引用全局作用域中可用的全部变量 |
| 2 | $_SERVER |
服务器和执行环境信息 |
| 3 | $_GET |
HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组 |
| 4 | $_POST |
HTTP POST 请求: 将变量以关联数组形式传入当前脚本 |
| 5 | $_FILES |
HTTP 文件上传变量,保存着上传文件的全部信息 |
| 6 | $_COOKIE |
通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
| 7 | $_SESSION |
当前脚本可用 SESSION 变量的数组 |
| 8 | $_REQUEST |
默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组 |
| 9 | $_ENV |
通过环境方式传递给当前脚本的变量的数组 |
<?php// 超全局变量不需要定义,不需要初始化// $GLOBALS = ....;;# 变量作用域// 全局作用域$siteName = 'php中文网';// 全局变量会自动注册也为超全局变量数组$GlOBALS的一个值// 超全局变量不受作用域限制// print_r($GLOBALS['siteName']);// 声明函数: 同时也创建一个函数作用域function getInfo() : string{// 定义了一个函数"私有变量"// 1. 方法1: global// global $siteName;// 2. 使用超全局变量$private = $GLOBALS['siteName'];// 函数中可以直接访问超全局变量echo $_SERVER['SCRIPT_NAME']. '<br>';return $private;}echo getInfo();echo $_SERVER['SCRIPT_NAME']. '<br>';
static修饰,并且与函数作用域绑定0
<?php# 静态变量namespace ns1;function test1(): float{// 私有变量,也叫动态变量,在函数中每一次都会自动初始化// 并且无法在多次调用过程中保持不变$sum = 0;$sum = $sum + 1;return $sum;}echo test1(), '<br>';echo test1(), '<br>';echo test1(), '<br>';echo '<hr>';// 命名空间// 不同的目录下面可以有相同的文件名namespace ns2;// 全局变量$sum = 0;function test1(): float{global $sum;$sum = $sum + 1;return $sum;}echo test1(), '<br>';echo test1(), '<br>';echo test1(), '<br>';echo '<hr>';namespace ns3;function test1(): float{// 局部静态变量: 只在函数第一次调用的时候被初始化,以后不会再被更新了// 静态变量,可以理解为在函数中的"伪全局变量"// 实现函数在多次调用的过程中共享数据static $sum = 0;$sum = $sum + 1;return $sum;}echo test1(), '<br>';echo test1(), '<br>';echo test1(), '<br>';echo '<hr>';$num1 = 20;// 变量的本质是数据共享// 函数的本质是代码共享echo $num1 + 40;echo '<br>';echo $num1 + 20;echo '<br>';echo $num1 + 90;
本节课学习了变量以及常量的基础知识,通过本节课的学习使我知道了一个新的知识点变量过滤器,学习了如何查询变量过滤器以及变量过滤器的使用语法,对一些以前了解的知识进行了巩固和补充。这是我的一些总结与大家分享,有不恰当的地方欢迎大家多多指正,我也会虚心的接受大家的建议,希望和大家共同进步。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号