WEB安全
00-HTTP协议
01-前端基础【HTML】
02-前端基础【CSS】
03-后端基础【PHP速通】
04-后端基础【PHP面向对象】
05-MySQL基础操作
06-前后端联动【代码练习】
07-SQL注入
08-SQL注入 Labs
09-跨站脚本攻击【XSS】
09-XSS Labs
10-CSRF
11-SSRF
12-XML 外部实体注入【XXE】
13-代码执行漏洞
14-命令执行漏洞
15-文件包含漏洞
16-文件上传漏洞
17-反序列化漏洞
18-业务逻辑漏洞
19-未授权访问漏洞集合
20-跨源资源共享【CORS】
21-SSTI模板注入
22-并发漏洞
23-点击劫持【Clickjacking 】
24-请求走私
25-路径遍历
26-访问控制
27-身份验证漏洞
28-WebSocket
29-Web缓存中毒
30-HTTP 主机头攻击
31-信息泄露漏洞
32-原型污染
33-API概述
34-API分类类型
35-API交换格式
36-API身份验证
37-API常见漏洞
38-crAPI靶场
39-JWT
40-DVGA靶场
41-服务器端参数污染
42-API Labs
43-OAuth Labs
44-GraphQL API Labs
45-JWT Labs
46-小程序抓包
47-云存储
48-对象存储OSS
49-存储桶
50-存储桶漏洞
51-STS访问OSS
-
+
03-后端基础【PHP速通】
浏览
1
# 一、概述 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。 它最初由Rasmus Lerdorf于1994年创建,旨在简化网页开发过程。PHP可以嵌入到HTML中,并与多种数据库集成,最常用的是MySQL。其灵活性、易学性和强大的社区支持使得PHP成为开发动态网页和Web应用程序的首选语言之一。 PHP代码在服务器上执行,生成的HTML发送到客户端,从而实现网页的动态交互。它广泛应用于各种Web开发项目,包括内容管理系统、电子商务平台和社交媒体网站。 ## PHP 是什么? * PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。 * PHP 脚本在服务器上执行。 * PHP 可免费下载使用。 ## PHP 文件是什么? * PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码 * PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器 * PHP 文件的默认文件扩展名是 ".php" ## PHP 能做什么? * PHP 可以生成动态页面内容 * PHP 可以创建、打开、读取、写入、关闭服务器上的文件 * PHP 可以收集表单数据 * PHP 可以发送和接收 cookies * PHP 可以添加、删除、修改您的数据库中的数据 * PHP 可以限制用户访问您的网站上的一些页面 * PHP 可以加密数据 ## 为什么使用 PHP? * PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等) * PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等) * PHP 提供了广泛的数据库支持 * PHP 易于学习,并可高效地运行在服务器端 ## PHP语法 PHP 脚本可以放在文档中的任何位置。 PHP 脚本以 结束: PHP 文件的默认文件扩展名是 ".php"。 PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。 ```html <!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> <?php echo "Hello World!"; ?> </body> </html> ``` PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。 通过 PHP,有两种在浏览器输出文本的基础指令:**echo** 和 **print**。 ## PHP 注释 * // 单行注释 * /\* \*/ 多行注释 ```html <!DOCTYPE html> <html> <body> <?php // 这是 PHP 单行注释 /* 这是 PHP 多行 注释 */ ?> </body> </html> ``` ## 变量 变量是用于存储信息的"容器" ```php <?php $x=5; $y=6; $z=$x+$y; echo $z; ?> ``` **PHP 变量规则** * 变量以 \$ 符号开始,后面跟着变量的名称 * 变量名必须以字母或者下划线字符开始 * 变量名只能包含字母、数字以及下划线(A-z、0-9 和 \_ ) * 变量名不能包含空格 * 变量名是区分大小写的(\$y 和 \$Y 是两个不同的变量) ## 创建PHP变量 PHP 没有声明变量的命令。 变量在您第一次赋值给它的时候被创建 ```php <?php $txt="Hello world!"; $x=5; $y=10.5; ?> ``` 在上面的语句执行中,变量 **txt** 将保存值 \*\*Hello world!\*\*,且变量 **x** 将保存值 **5**。 **注释:** 当您赋一个文本值给变量时,请在文本值两侧加上引号。 ## PHP 是一门弱类型语言 PHP 会根据变量的值,自动把变量转换为正确的数据类型。 在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。 # 二、echo 和 print 语句 echo 和 print 区别: * echo - 可以输出一个或多个字符串 * print - 只允许输出一个字符串,返回值总为 1 **提示:** echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。 echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。 **显示字符串** ```php <?php echo "<h2>PHP 很有趣!</h2>"; echo "Hello world!<br>"; echo "我要学 PHP!<br>"; echo "这是一个", "字符串,", "使用了", "多个", "参数。"; ?> ``` **显示变量** ```php <?php $txt1="学习 PHP"; $txt2="xbxaq.com"; $cars=array("Volvo","BMW","Toyota"); echo $txt1; echo "<br>"; echo "在 $txt2 学习 PHP "; echo "<br>"; echo "我车的品牌是 {$cars[0]}"; ?> ``` print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。 **显示字符串** ```php <?php print "<h2>PHP 很有趣!</h2>"; print "Hello world!<br>"; print "我要学习 PHP!"; ?> ``` **显示变量** ```php <?php $txt1="学习 PHP"; $txt2="xbxaq.COM"; $cars=array("Volvo","BMW","Toyota"); print $txt1; print "<br>"; print "在 $txt2 学习 PHP "; print "<br>"; print "我车的品牌是 {$cars[0]}"; ?> ``` # 三、数据类型 PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。 PHP 支持以下几种数据类型: * String(字符串) * Integer(整型) * Float(浮点型) * Boolean(布尔型) * Array(数组) * Object(对象) * (空值) * Resource(资源类型) ## 字符串 一个字符串是一串字符的序列,就像 "Hello world!"。 你可以将任何文本放在单引号和双引号中 ```php <?php $x = "Hello world!"; echo $x; echo "<br>"; $x = 'Hello world!'; echo $x; ?> ``` ## 整型 整数是一个没有小数的数字。 整数规则: * 整数必须至少有一个数字 (0-9) * 整数不能包含逗号或空格 * 整数是没有小数点的 * 整数可以是正数或负数 * 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。 PHP var\_dump()函数用于输出一个或多个表达式的类型和值,它通常用于调试目的,因为它可以快速显示变量的详细信息。 ```php <?php $x = 5985; var_dump($x); echo "<br>"; $x = -345; // 负数 var_dump($x); echo "<br>"; $x = 0x8C; // 十六进制数 var_dump($x); echo "<br>"; $x = 047; // 八进制数 var_dump($x); ?> ``` ## 浮点型 浮点数是带小数部分的数字,或是指数形式 ```php <?php $x = 10.365; var_dump($x); echo "<br>"; $x = 2.4e3; var_dump($x); echo "<br>"; $x = 8E-5; var_dump($x); ?> ``` ## 布尔型 布尔型可以是 TRUE 或 FALSE。 布尔型通常用于条件判断。 ## 数组 数组可以在一个变量中存储多个值 ```php <?php $cars=array("Volvo","BMW","Toyota"); var_dump($cars); ?> ``` ## 对象 对象数据类型也可以用于存储数据。 在 PHP 中,对象必须声明。 首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。 然后我们在类中定义数据类型,然后在实例化的类中使用数据类型 ```php <?php class Car { var $color; function __construct($color="green") { $this->color = $color; } function what_color() { return $this->color; } } ?> ``` ## 值 值表示变量没有值。 是数据类型为 的值。 值指明一个变量是否为空值。 同样可用于数据空值和 值的区别。 可以通过设置变量值为 来清空变量数据 ```php <?php $x="Hello world!"; $x=null; var_dump($x); ?> ``` ## 类型比较 虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。 * 松散比较:使用两个等号 **==** 比较,只比较值,不比较类型。 * 严格比较:用三个等号 **===** 比较,除了比较值,也比较类型。 例如,"42" 是一个字符串而 42 是一个整数。**FALSE** 是一个布尔值而 **"FALSE"** 是一个字符串。 ```php <?php if(42 == "42") { echo '1、值相等'; } echo PHP_EOL; // 换行符 if(42 === "42") { echo '2、类型相等'; } else { echo '3、类型不相等'; } ?> ``` ## PHP中 比较 0、false、 ```php <?php echo '0 == false: '; var_dump(0 == false); echo '0 === false: '; var_dump(0 === false); echo "<hr />"; echo '0 == null: '; var_dump(0 == null); echo '0 === null: '; var_dump(0 === null); echo "<hr />"; echo 'false == null: '; var_dump(false == null); echo 'false === null: '; var_dump(false === null); echo "<hr />"; echo '"0" == false: '; var_dump("0" == false); echo '"0" === false: '; var_dump("0" === false); echo "<hr />"; echo '"0" == null: '; var_dump("0" == null); echo '"0" === null: '; var_dump("0" === null); echo "<hr />"; echo '"" == false: '; var_dump("" == false); echo '"" === false: '; var_dump("" === false); echo "<hr />"; echo '"" == null: '; var_dump("" == null); echo '"" === null: '; var_dump("" === null); ``` # 四、常量 常量值被定义后,在脚本的其他任何地方都不能被改变 常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 \$ 修饰符)。 **注意:** 常量在整个脚本中都可以使用。 设置常量,使用 define() 函数,函数语法如下 ```bash bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) ``` 该函数有三个参数: * **name:** 必选参数,常量名称,即标志符。 * **value:** 必选参数,常量的值。 * **case_insensitive** :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。 创建一个 **区分大小写的常量**, 常量值为 "欢迎访问 xbxaq.com" ```php <?php // 区分大小写的常量名 define("GREETING", "欢迎访问 xbxaq.com"); echo GREETING; // 输出 echo '<br>'; echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义 ?> ``` # 五、运算符 PHP 中,赋值运算符 **=** 用于给变量赋值。 在 PHP 中,算术运算符 **+** 用于把值加在一起。 ## 算术运算符 ```php <?php $x=10; $y=6; echo ($x + $y); // 输出16 echo '<br>'; // 换行 echo ($x - $y); // 输出4 echo '<br>'; // 换行 echo ($x * $y); // 输出60 echo '<br>'; // 换行 echo ($x / $y); // 输出1.6666666666667 echo '<br>'; // 换行 echo ($x % $y); // 输出4 echo '<br>'; // 换行 echo -$x; ?> ``` ## 赋值运算符 ```php <?php $x=10; echo $x; // 输出10 echo "<hr />"; $y=20; $y += 100; echo $y; // 输出120 echo "<hr />"; $z=50; $z -= 25; echo $z; // 输出25 echo "<hr />"; $i=5; $i *= 6; echo $i; // 输出30 echo "<hr />"; $j=10; $j /= 5; echo $j; // 输出2 echo "<hr />"; $k=15; $k %= 4; echo $k; // 输出3 ?> ``` ## 递增/递减运算符 ```php <?php $x=10; echo ++$x; // 输出11 echo "<hr />"; $y=10; echo $y++; // 输出10 echo "<hr />"; $z=5; echo --$z; // 输出4 echo "<hr />"; $i=5; echo $i--; // 输出5 ?> ``` ## 比较运算符 ```php <?php $x=100; $y="100"; var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>"; $a=50; $b=90; var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?> ``` ## 三元运算符 语法格式: ```bash (expr1) ? (expr2) : (expr3) ``` 对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。 ## 条件语句 您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。 在 PHP 中,提供了下列条件语句: * **if 语句** - 在条件成立时执行代码 * **if...else 语句** - 在条件成立时执行一块代码,条件不成立时执行另一块代码 * **if...elseif....else 语句** - 在若干条件之一成立时执行一个代码块 * **switch 语句** - 在若干条件之一成立时执行一个代码块 if 语句用于**仅当指定条件成立时执行代码** 语法: ```bash if (条件) { 条件成立时要执行的代码; } ``` ```php <?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } ?> ``` ## if...else 语句 **在条件成立时执行一块代码,条件不成立时执行另一块代码**,请使用 if....else 语句。 语法: ```bash if (条件) { 条件成立时执行的代码; } else { 条件不成立时执行的代码; } ``` ```php <?php $t=date("H"); if ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?> ``` ## if...elseif....else 语句 **在若干条件之一成立时执行一个代码块**,请使用 if....elseif...else 语句。. 语法: ```bash if (条件) { if 条件成立时执行的代码; } elseif (条件) { elseif 条件成立时执行的代码; } else { 条件不成立时执行的代码; } ``` ```php <?php $t=date("H"); if ($t<"10") { echo "Have a good morning!"; } elseif ($t<"20") { echo "Have a good day!"; } else { echo "Have a good night!"; } ?> ``` # 六、witch 语句 switch 语句用于根据多个不同条件执行不同动作。 如果您希望**有选择地执行若干代码块之一**,请使用 switch 语句。 ```php <?php $favcolor="red"; switch ($favcolor) { case "red": echo "你喜欢的颜色是红色!"; break; case "blue": echo "你喜欢的颜色是蓝色!"; break; case "green": echo "你喜欢的颜色是绿色!"; break; default: echo "你喜欢的颜色不是 红, 蓝, 或绿色!"; } ?> ``` # 七、数组 数组能够在单个变量中存储多个值 数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。 ```php <?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> ``` ## 创建数组 在 PHP 中,array() 函数用于创建数组: ```bash array(); ``` 在 PHP 中,有三种类型的数组: * **数值数组** - 带有数字 ID 键的数组 * **关联数组** - 带有指定的键的数组,每个键关联一个值 * **多维数组** - 包含一个或多个数组的数组 ## 数值数组 这里有两种创建数值数组的方法: 自动分配 ID 键(ID 键总是从 0 开始): ```bash $cars=array("Volvo","BMW","Toyota"); ``` ```php <?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . "."; ?> ``` ## 获取数组的长度 - count() 函数 count() 函数用于返回数组的长度(元素的数量) ```php <?php $cars=array("Volvo","BMW","Toyota"); echo count($cars); ?> ``` ## 遍历数值数组 遍历并打印数值数组中的所有值,您可以使用 for 循环 ```php <?php $cars=array("Volvo","BMW","Toyota"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } ?> ``` ## 关联数组 关联数组是使用您分配给数组的指定的键的数组。 这里有两种创建关联数组的方法 ```bash $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); or $age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43"; ``` ```php <?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); echo "Peter is " . $age['Peter'] . " years old."; ?> ``` ## 遍历关联数组 遍历并打印关联数组中的所有值,您可以使用 foreach 循环 ```php <?php $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?> ``` # 八、循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。 在 PHP 中,提供了下列循环语句: * **while** - 只要指定的条件成立,则循环执行代码块 * **do...while** - 首先执行一次代码块,然后在指定的条件成立时重复这个循环 * **for** - 循环执行代码块指定的次数 * **foreach** - 根据数组中每个元素来循环代码块 # 九、while循环 while 循环将重复执行代码块,直到指定的条件不成立。 语法 ```· while (条件) { 要执行的代码; } ``` 实例首先设置变量 *i* 的值为 1 (\$i\=1;)。 然后,只要 *i* 小于或者等于 5,while 循环将继续运行。循环每运行一次,*i* 就会递增 1: ```html <html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . "<br>"; $i++; } ?> </body> </html> ``` ## do...while 语句 do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。 语法 ```bash do { 要执行的代码; } while (条件); ``` 实例首先设置变量 *i* 的值为 1 (\$i\=1;)。 然后,开始 do...while 循环。循环将变量 *i* 的值递增 1,然后输出。先检查条件(*i* 小于或者等于 5),只要 *i* 小于或者等于 5,循环将继续运行 ```php <html> <body> <?php $i=1; do { $i++; echo "The number is " . $i . "<br>"; } while ($i<=5); ?> </body> </html> ``` # 十、For 循环 for 循环用于您预先知道脚本需要运行的次数的情况。 语法 ```bash for (初始值; 条件; 增量) { 要执行的代码; } ``` 参数: * **初始值**:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。 * **条件**:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。 * **增量**:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。 **注释:** 上面的**初始值**和**增量**参数可为空,或者有多个表达式(用逗号分隔)。 实例 下面的实例定义一个初始值为 i\=1 的循环。只要变量 **i** 小于或者等于 5,循环将继续运行。循环每运行一次,变量 **i** 就会递增 1 ```php <?php for ($i=1; $i<=5; $i++) { echo "数字为 " . $i; } ?> ``` ## foreach 循环 foreach 循环用于遍历数组。 语法 ```bash foreach ($array as $value) { 要执行代码; } ``` 每进行一次循环,当前数组元素的值就会被赋值给 \$value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。 ```bash foreach ($array as $key => $value) { 要执行代码; } ``` 每一次循环,当前数组元素的键与值就都会被赋值给 \$key 和 \$value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。 ```php <?php $x=array("Google","Runoob","Taobao"); foreach ($x as $value) { echo $value; echo "<br>"; } ?> ``` ```php <?php $x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao"); foreach ($x as $key => $value) { echo "key 为 " . $key . ",对应的 value 为 ". $value . PHP_EOL; } ?> ``` # 十一、函数 ## 创建 PHP 函数 函数是通过调用函数来执行的。 ```php <?php function functionName() { // 要执行的代码 } ?> ``` 函数准则: * 函数的名称应该提示出它的功能 * 函数名称以字母或下划线开头(不能以数字开头) ```php <?php function writeName() { echo "Kai Jim Refsnes"; } echo "My name is "; writeName(); ?> ``` ## 函数 - 添加参数 为了给函数添加更多的功能,我们可以添加参数,参数类似变量。 参数就在函数名称后面的一个括号内指定。 ```php <?php function writeName($fname) { echo $fname . " Refsnes.<br>"; } echo "My name is "; writeName("Kai Jim"); echo "My sister's name is "; writeName("Hege"); echo "My brother's name is "; writeName("Stale"); ?> ``` ```php <?php function writeName($fname,$punctuation) { echo $fname . " Refsnes" . $punctuation . "<br>"; } echo "My name is "; writeName("Kai Jim","."); echo "My sister's name is "; writeName("Hege","!"); echo "My brother's name is "; writeName("Ståle","?"); ?> ``` ## 函数 - 返回值 如需让函数返回一个值,请使用 return 语句 ```php <?php function add($x,$y) { $total=$x+$y; return $total; } echo "1 + 16 = " . add(1,16); ?> ``` # 十二、超局变量 超全局变量是在全部作用域中始终可用的内置变量。在函数或方法中无需执行global \$variable;就可以访问它们。 这些超全局变量如下: * \$GLOBALS:包含了全部变量的全局组合数组。变量的名字就是数组的键。 * \$\_SERVER:包含了诸如头信息(header)、 路径(path), 以及脚本位置(script locations)等信息的数组。这个数组中的项目由Web服务器创建。 * \$\_GET:通过URL参数传递给当前脚本的变量的数组。 * \$\_POST:当HTTP POST请求的Content-Type是application/x-www-form-urlencoded或multipart/form-data时,会将变量以关联数组形式传入当前脚本。 * \$\_REQUEST:默认情况下包含了\$\_GET、\$\_POST和\$\_COOKIE的数组。 * \$\_COOKIE:通过HTTP Cookies方式传递给当前脚本的变量的数组。 * \$\_SESSION:当前脚本可用SESSION变量的数组。 * \$\_FILES:通过HTTP POST方式上传到当前脚本的项目的数组。 * \$\_ENV:通过环境方式传递给当前脚本的变量的数组。 # 十三、魔术常量 魔术常量是PHP向它运行的任何脚本提供的大量的预定义常量。魔术常量其实不是常量,可以理解为特殊的常量,以下介绍的5个魔术常量随位置而改变。 * \_\_LINE\_\_:表示文件中的当前行号,不区分大小写; * \_\_FILE\_\_:表示文件完整的路径和命名,不区分大小写; * \_\_FUNCTION\_\_:表示函数名称,区分大小写; * \_\_CLASS\_\_:表示类的名称,区分大小写; * \_\_METHOD\_\_:表示类的方法的名称,区分大小写; * ...... # 十四、魔术方法 魔术方法都是以两个下划线开头 * \_\_construct():构造方法,当一个对象实例化时自动调用; * \_\_destruct():析构方法,当对象被销毁之前系统自动调用。用于释放对象所占用的额外的资源,而不是对象本身。有三种销毁对象的方法,具体如下: (1)脚本执行完毕之后,自动销毁 (2)改变对象变量的值,自动销毁 (3)使用 unset函数销毁对象 * \_\_clone():克隆一个对象时自动调用; * \_\_autoload ():使用尚未被定义的类时自动调用; * \_\_sleep():串行化的时候调用; * \_\_wakeup():反串行化的时候调用; * \_\_tostring():把一个对象转换成字符串来用时自动调用该方法; * \_\_invoke():把对象当一个方法来用时就会自动调用该方法; * \_\_set():为不可访问的属性设值时就会自动调用该方法; * \_\_get():获得不可访问的属性的值; * \_\_unset():删除不可访问的属性; * \_\_isset():判断不可访问的属性是否存在; * \_\_call():当调用一个不可访问的对象方法时自动调用该方法; * \_\_callstatic():调用一个不可访问的类方法;
毛林
2026年11月15日 18:27
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~