批改状态:合格
老师批语:写的很好!不过要注意命名方法,函数使用下滑线命名,类名使用大驼峰,方法使用小驼峰。
| 作用域 | 说明 |
|---|---|
| 局部变量 | 在函数的内部定义的变量,作用域就是所在的函数范围 |
| 全局变量 | 在被定义所有的函数以外的变量,作用域是整个PHP文件,但是在用户自定义函数内部是不能使用的。如果希望用户在用户自定义函数内部使用全局变量,则使用global关键字声明全局变量 |
| 静态变量 | 能够在函数调用结束后仍保留变量值,当再次回到其作用域,又可以继续使用原来的值。而一般变量是在函数调用后,其存储的数据值会被清除,所占用的内存空间也会被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前 |
在函数内部定义的变量,其作用域为所在的函数,如果在函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会被清除。
<?php$username= "史泰龙"; //什么一个全局变量function actors(){$username = "杰森斯坦森"; //与全局变量同样的变量名申明一个局部变量echo $username; //在函数中打印变量}actors(); //调用函数echo "<br>"; //换行echo $username; //打印全局变量
<?phpfunction zdy0(){ //定义函数zdy0static $message = 0; //初始化静态变量$message+=1; //变量=变量+1echo $message." "; // 输出变量链接一个空格}function zdy1(){ //定义函数zdy1$message = 0; //初始化变量$message+=1; //变量=变量+1echo $message." "; // 输出变量链接一个空格}for ($i=0;$i<10;$i++) zdy0();echo "<br>";for ($i=0;$i<10;$i++) zdy1();echo "<br>";
示例中在函数内分别定义了一个静态变量,和一个局部变量,分别对两个函数进行10次的循环输出,函数zdy0中由于设置了静态变量$message的值未被初始化,zdy1中的$message的值循环一次被初始化一次。详情见示例图

<?php$username = "杰森斯坦森";$username1 = "史泰龙";function actors(){$oles = "动作演员";global $username;$site = "好莱坞";echo $username."与".$username1."是".$oles."他的片场在".$site;}actors();
| 申明常量的方法 | 说明 |
|---|---|
| define | define是函数,不能在对象中定义,但可在类中定义使用, |
| const | const是一个语言结构,编译时要比define快,是为全局常量,可在对象里定义,类中使用,可理解为类常量 |
、
define示例
<?phpdefine("CONSTANT", "Hello world.",true);define("CONSTANT1","PhP");//第一个参数常量名CONSTANT//第二个参数常量值//第三个参数不区分大小写,默认是false,echo CONSTANT; // 输出 "Hello world."并发出一个提示级别错误信息echo "<br>";echo Constant; // 输出 "Hello world" 并发出一个提示级别错误信息echo "<hr>";echo CONSTANT1; //输出"PHP"没有任何报错echo "<br>";echo Constant1; // 输出 "Constant1" 并发出一个提示级别错误信息//由于define只能使用大写字母来定义,输出小写只显示错误的变量名和错误信息

const示例
<?phpdefine("SHOWDEFINE","这是define常量值"); //定义全局常量class MyClass{const CONS = '这是CONS常量值'; //定义类常量define在类中不能定义// const默认static静态function showConstant() {echo self::CONS; //输出const常量echo "<br>";echo constant('SHOWDEFINE'); //输出define常量}}$class = new MyClass(); //实例化$class -> showConstant();echo "<br>";echo "<hr>";echo "<br>";echo $class::CONS; //输出const常量echo "<br>";echo constant('SHOWDEFINE'); //输出define常量
在示例中定义了define常量和const常量,define常量在类中不能定义,const在类中定义在全局使用。
示例图
<?phpnamespace MyProject; //定义命名空间MyProjectconst A = 1; //定义一个常量function MyFunc(){ //定义函数$Func = "我是函数"; //定义一个字符串return $Func; // 返回定义的变量}class MyClass{ //定义一个类public $clas; //定义一个类的共用变量static function MyMethod(){ //定义一个静态函数$clas = "我是类"; //为变量赋值return $clas; //返回定义的变量}}?>
<?phpinclude ("demo.php"); //引入demo.php文件echo MyProject\A."<br>"; // 输出命名空间conts的值echo MyProject\MyFunc()."<br>"; // 输出命名空间函数的返回值:我是函数echo MyProject\MyClass::MyMethod(); // 输出命名空间类返回值:我是类?>
以上demo1.php
在demo.php中定义了命名空间MyProject,在命名空间中分别创建了一个常量A,一个函数MyFunc并返回值”我是函数”,一个类MyClass并返回值”我是类”。
在demo1.php中引用了demo.php文件,调用并输出命名空间。
示例图


PHP 的过滤器扩展的设计目的是使数据过滤更轻松快捷。
几乎所有的 Web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,您能够确保应用程序获得正确的输入类型。您应该始终对外部数据进行过滤!
输入过滤是最重要的应用程序安全课题之一。
什么是外部数据?
如需过滤变量,请使用下面的过滤器函数之一:
示例:filter_var()
<?php$int = 123; //定义一个整数变量if(!filter_var($int, FILTER_VALIDATE_INT)){ //判断是否为整数echo("不是一个合法的整数"); // 不是就输出}else{echo("是个合法的整数"); // 是就输出}//重点是FILTER函数用来过滤所需

试着验证来自表单的输入。我们需要做的第一件事情是确认是否存在我们正在查找的输入数据。
示例:
<?phpif(!filter_has_var(INPUT_GET, "email")){//判断email是否是GET传过来的//如果定义了$email,同样的是报没有email参数echo("没有 email 参数");}else{if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)){//使用filter_input过滤器对email判断是否合法echo "不是一个合法的 E-Mail";}else{echo "是一个合法的 E-Mail";}}
示例中采用filter_has_var对email进行判断是否GET传送的值,如果是定义了$email就直接输出没有email参数,在运行代码的时候在demo.php后加入?email=ynde@126.com,代码正常运行。后使用了filter_input对get传值的email进行判断是否合法。
示例图:


表单通常由多个输入字段组成。为了避免对 filter_var 或 filter_input 函数重复调用,我们可以使用 filter_var_array 或 filter_input_array 函数。
<?php$filters = array //定义一个filters的多维数组("name" => array // 定义一个name的数组("filter"=>FILTER_SANITIZE_STRING //对filter字符串的标签及特殊字符剔除),"age" => array //定义一个数组("filter"=>FILTER_VALIDATE_INT, //对数组中filter符号和数字外的特殊字符剔除"options"=>array //定义一个数组("min_range"=>1, //为options['min_range']赋值"max_range"=>120 //为options['max_range']赋值)),"email"=> FILTER_VALIDATE_EMAIL //对filters['email'] 赋值);print_r("<pre>");print_r($filters);print_r("<pre>");echo"<hr>";$result = filter_input_array(INPUT_GET, $filters);//对GET传值进行过滤var_dump($result["age"]); //过滤出的ageecho "<br>";var_dump($result["email"]); //过滤出的emailecho "<br>";if (!$result["age"]){echo("年龄必须在 1 到 120 之间。<br>");}elseif(!$result["email"]){echo("E-Mail 不合法<br>");}else{echo("输入正确");}
在代码中我们使用了多维数组做了一个URL使用filter_var_array对URL进行过滤,对数组中的数值进行验证。
示例图

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号