后端基础【PHP速通】

概述

  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 脚本代码。

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

  ‍

  PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

  通过 PHP,有两种在浏览器输出文本的基础指令:echoprint

PHP 注释

  • // 单行注释
  • /* */ 多行注释
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<body>

<?php
// 这是 PHP 单行注释

/*
这是
PHP 多行
注释
*/
?>

</body>
</html>

  ‍

变量

  变量是用于存储信息的”容器”

1
2
3
4
5
6
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

  ‍

  PHP 变量规则

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

创建PHP变量

  PHP 没有声明变量的命令。

  变量在您第一次赋值给它的时候被创建

1
2
3
4
5
<?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()。

  显示字符串

1
2
3
4
5
6
<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
?>

  ‍

  显示变量

1
2
3
4
5
6
7
8
9
10
11
<?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()。

  显示字符串

1
2
3
4
5
<?php
print "<h2>PHP 很有趣!</h2>";
print "Hello world!<br>";
print "我要学习 PHP!";
?>

  ‍

  显示变量

1
2
3
4
5
6
7
8
9
10
11
<?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!”。

  你可以将任何文本放在单引号和双引号中

1
2
3
4
5
6
7
<?php 
$x = "Hello world!";
echo $x;
echo "<br>";
$x = 'Hello world!';
echo $x;
?>

  ‍

整型

  整数是一个没有小数的数字。

  整数规则:

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

  PHP var_dump()函数用于输出一个或多个表达式的类型和值,它通常用于调试目的,因为它可以快速显示变量的详细信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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);
?>

  ‍

浮点型

  浮点数是带小数部分的数字,或是指数形式

1
2
3
4
5
6
7
8
9
10
<?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

  布尔型通常用于条件判断

数组

  数组可以在一个变量中存储多个值

1
2
3
4
<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

  ‍

对象

  对象数据类型也可以用于存储数据。

  在 PHP 中,对象必须声明。

  首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

  然后我们在类中定义数据类型,然后在实例化的类中使用数据类型

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class Car
{
var $color;
function __construct($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>

  ‍

   值表示变量没有值。 是数据类型为 的值。

   值指明一个变量是否为空值。 同样可用于数据空值和 值的区别。

  可以通过设置变量值为 来清空变量数据

1
2
3
4
5
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

  ‍

类型比较

  虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

  例如,”42” 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(42 == "42") {
echo '1、值相等';
}

echo PHP_EOL; // 换行符

if(42 === "42") {
echo '2、类型相等';
} else {
echo '3、类型不相等';
}
?>

  ‍

PHP中 比较 0、false、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?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() 函数,函数语法如下

1
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

  ‍

  该函数有三个参数:

  • name: 必选参数,常量名称,即标志符。
  • value: 必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

  创建一个 区分大小写的常量, 常量值为 “欢迎访问 xbxaq.com”

1
2
3
4
5
6
7
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 xbxaq.com");
echo GREETING; // 输出
echo '<br>';
echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义
?>

  ‍

运算符

  PHP 中,赋值运算符 = 用于给变量赋值。

  在 PHP 中,算术运算符 + 用于把值加在一起。

算术运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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;
?>

  ‍

赋值运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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
?>

  ‍

递增/递减运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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
?>

  ‍

比较运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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);
?>

  ‍

三元运算符

语法格式

1
(expr1) ? (expr2) : (expr3) 

  ‍

  对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

条件语句

  您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。

  在 PHP 中,提供了下列条件语句:

  • if 语句 - 在条件成立时执行代码
  • if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if…elseif….else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

  if 语句用于仅当指定条件成立时执行代码

语法

1
2
3
4
if (条件)
{
条件成立时要执行的代码;
}

  ‍

1
2
3
4
5
6
7
<?php
$t=date("H");
if ($t<"20")
{
echo "Have a good day!";
}
?>

  ‍

if…else 语句

  在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if….else 语句。

语法

1
2
3
4
5
6
7
8
if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

  ‍

1
2
3
4
5
6
7
8
9
10
11
<?php
$t=date("H");
if ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>

  ‍

if…elseif….else 语句

  在若干条件之一成立时执行一个代码块,请使用 if….elseif…else 语句。.

语法

1
2
3
4
5
6
7
8
9
10
11
12
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

  ‍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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!";
}
?>

  ‍

Switch 语句

  switch 语句用于根据多个不同条件执行不同动作。

  如果您希望有选择地执行若干代码块之一,请使用 switch 语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
echo "你喜欢的颜色是红色!";
break;
case "blue":
echo "你喜欢的颜色是蓝色!";
break;
case "green":
echo "你喜欢的颜色是绿色!";
break;
default:
echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

  ‍

数组

  数组能够在单个变量中存储多个值

  数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

  ‍

创建数组

  在 PHP 中,array() 函数用于创建数组:

1
array();

  ‍

  在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

数值数组

  这里有两种创建数值数组的方法:

  自动分配 ID 键(ID 键总是从 0 开始):

1
$cars=array("Volvo","BMW","Toyota");

  ‍

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

  ‍

获取数组的长度 - count() 函数

  count() 函数用于返回数组的长度(元素的数量)

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

  ‍

遍历数值数组

  遍历并打印数值数组中的所有值,您可以使用 for 循环

1
2
3
4
5
6
7
8
9
10
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>

  ‍

关联数组

  关联数组是使用您分配给数组的指定的键的数组。

  这里有两种创建关联数组的方法

1
2
3
4
5
6
7
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

or

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

  ‍

1
2
3
4
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

  ‍

遍历关联数组

  遍历并打印关联数组中的所有值,您可以使用 foreach 循环

1
2
3
4
5
6
7
8
9
<?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 循环将重复执行代码块,直到指定的条件不成立。

语法

1
2
3
4
while (条件)
{
要执行的代码;
}

  ‍

  实例首先设置变量 i 的值为 1 ($i=1;)。

  然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<body>

<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++;
}
?>

</body>
</html>

  ‍

do…while 语句

  do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。

语法

1
2
3
4
5
do
{
要执行的代码;
}
while (条件);

  ‍

  实例首先设置变量 i 的值为 1 ($i=1;)。

  然后,开始 do…while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<body>

<?php
$i=1;
do
{
$i++;
echo "The number is " . $i . "<br>";
}
while ($i<=5);
?>

</body>
</html>

  ‍

For 循环

  for 循环用于您预先知道脚本需要运行的次数的情况。

语法

1
2
3
4
for (初始值; 条件; 增量)
{
要执行的代码;
}

  ‍

  参数:

  • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
  • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
  • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。

  注释: 上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。

实例

  下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1

1
2
3
4
5
6
<?php
for ($i=1; $i<=5; $i++)
{
echo "数字为 " . $i;
}
?>

  ‍

foreach 循环

  foreach 循环用于遍历数组。

语法

1
2
3
4
foreach ($array as $value)
{
要执行代码;
}

  ‍

  每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

1
2
3
4
foreach ($array as $key => $value)
{
要执行代码;
}

  ‍

  每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。

1
2
3
4
5
6
7
8
<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{
echo $value;
echo "<br>";
}
?>

  ‍

1
2
3
4
5
6
7
<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{
echo "key 为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>

  ‍

函数

创建 PHP 函数

  函数是通过调用函数来执行的。

1
2
3
4
5
6
<?php
function functionName()
{
// 要执行的代码
}
?>

  ‍

  函数准则:

  • 函数的名称应该提示出它的功能
  • 函数名称以字母或下划线开头(不能以数字开头)
1
2
3
4
5
6
7
8
9
<?php
function writeName()
{
echo "Kai Jim Refsnes";
}

echo "My name is ";
writeName();
?>

  ‍

函数 - 添加参数

  为了给函数添加更多的功能,我们可以添加参数,参数类似变量。

  参数就在函数名称后面的一个括号内指定。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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");
?>

  ‍

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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 语句

1
2
3
4
5
6
7
8
9
<?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():调用一个不可访问的类方法;