PHP基础语法的学习与个人理解 第一部分

89 阅读9分钟

基础语法

标记

标记:由于PHP 是嵌入式脚本语言,它在实际开发中经常会与HTML内容混编在一起, 所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识。

种类有: image.png

  • 当解析一个PHP文件时,PHP解释器会寻找起始和结束标记,也就是告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

输出语句

echo:个人理解为回显;显示一个或多个信息

示例:

<?php
echo 'This is an output experiment';
?>

结果为: image.png

print:个人理解为印射;在页面上打印出一个信息

示例:

<?php
print 'This is an output experiment';
?>
  • printecho的区别在于:echo可以一次输出多个数据,而print只能输出一个
<?php
$dem='这是一个变量';
echo 321,
     '<br>',
     3.14,
     '<br>',
     'text',
     '<br>',
     $dem,
     '<hr/>',
print 'only one text';
?>

结果为:

image.png

  • 这段代码中,echo输出了一个整型(integer),一个浮点型(float),一个字符串(string)以及一个变量。而print只输出了一个数据

var_dump()print_r(),这两个函数属于php中的系统内置函数,也可以输出数据,个人认为这两个函数更多的作用是用来调试预测试

示例:

<?php
print_r('sakhgfs');

print '<hr/>';

$data = array(
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
);

echo '<pre>';
print_r($data);
echo '</pre>';

print '<hr/>';

var_dump(adfhgarhg);
?>

结果为:

image.png

  • 可以看输出;print_r()这个函数单独输出一个字符串之类的数据没有任何意义。那么现在定义一个数组,再用print_r()来输出就可以在浏览器中得到一个清晰的结构化数组信息
  • var_dump这个函数则直接输出了我所编辑的php文件路径、var_dumP()这个函数在第几行,以及我输出的数据类型为字符串、占用了9个字节、内容为我乱摁的一段字母

注释

单行注释://

例:

<?php
print_r('sakhgfs');     //用print_r()函数输出了一个字符串

print '<hr/>';        //'<hr/>'表示输出一个分割线

$data = array(            
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
);

echo '<pre>';
print_r($data);
echo '</pre>';

print '<hr/>';

var_dump(adfhgarhg);
?>

多行注释:/*XXXXXXX*/

例:

<?php
print_r('sakhgfs');     //用print_r()函数输出了一个字符串

print '<hr/>';        //'<hr/>'表示输出一个分割线,'<br>'则表示换行

$data = array(            
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
);

echo '<pre>';
print_r($data);
echo '</pre>';

/*$data = array(            
    'name' => 'John',
    'age' => 30,
    'city' => 'New York'
);
此段代码定义了一个数组
*/

print '<hr/>';

var_dump(adfhgarhg);
?>

标识符

标识符:PHP程序开发中,经常需要自定义一些符号来标记一些名称,如变量名、函数名、类名等, 这些符号被称为标识符

标识符的定义需要遵循一定的规则,具体如下:

  1. 标识符只能由字母(a-z,A-Z)、数字(0-9)、下划线(‘_’)组成,且不能包含空格
  2. 标识符只能以字母或下划线开头的任意长度的字符组成
  3. 标识符用做变量名时,区分大小写 $a,$A
  4. 如果标识符由多个单词组成,那么应使用下划线进行分隔(例如:user_name)
  5. 合法标识符: itcast、itcast88、_itcast、username、password等。
  6. 非法标识符:66itcast、it cast、123、@itcast等。it-cast

关键字

关键字:是编程语言里事先定义好并赋予特殊含义的单词,也称作保留字。和其他语言一样,PHP中保 留了许多关键字,例如classarray()image.png

  • echoprint这样的输出语句就属于关键字。php事先定义好并赋予了特殊含义,作用于输出显示信息,两个词的不同之处在输出语句那里解释了

数据与运算

常量

概念:常量就是在脚本运行过程中值始终不变的量
特点:是一旦被定义就不能被修改或重新定义
举例:数学中的圆周率π就是一个常量,其值就是固定且不能被改变的
命名规则:遵循标识符的命名规则,默认大小写敏感,习惯上常量名称总是使用大写字母表示

  • 在php中,常量是一个不可改变的值,一旦定义就不能再更改。常量的主要特点是在整个脚本中都可以使用,而且不受作用域的限制

定义方法一

define()函数
用法:define('CONSTANT_NAME', 'constant_value');

例:

<?php
define('GREETINGS','hello there!');    //值为英文小写字母,字符串型
define('GERALD','女术士打桩机');     //值为中文,字符串型
define('PI',3.14);    //值为小数,浮点型
?>
  • 这里定义了三个常量
  1. GREETINGS定义为hello there!
  2. 定义杰洛特(GERALD)为女术士打桩机
  3. PI定义值为3.14

需要注意的是这个函数的用法规则为:define()括号内第一个是常量名;这个常量名需要遵循命名规则,我这里全部是用大写字母命名的。然后输入这个常量的值;就像define('CONSTANT_NAME', 'constant_value');这样。常量名与常量值之间用英文字符,隔开。值可以是多种数据类型,我举的三个例子有注释

现在试试输出这三个常量:

<?php
define('GREETINGS','hello there!');    //值为英文小写字母,字符串型
define('GERALD','女术士打桩机');     //值为中文,字符串型
define('PI',3.14);    //值为小数,浮点型

echo GREETINGS,
     '<br>',
     GERALD,
     '<br>',
     PI;
?>

得到的结果为:

image.png

定义方法二

关键字const

使用方法:

<?php
const GREETINGS='hello there!';    //值为英文小写字母,字符串型
const GERALD='女术士打桩机';     //值为中文,字符串型
const PI=3.14;    //值为小数,浮点型

echo GREETINGS,
     '<br>',
     GERALD,
     '<br>',
     PI;
?>

得到的结果与define()函数一样

区别

  • 两个关键字的区别在于:define() 函数用于定义全局常量,而const可以用来定义类常量。

  • 关于全局常量与类常量:

全局常量:
全局常量是在php脚本中定义的,可以在整个脚本中访问的常量。这些常量使用 define() 函数定义,通常用于存储在整个应用程序中需要共享的常量信息,比如配置参数、版本号等。全局常量通常用于存储应用程序级别的常量信息,以确保这些值在整个应用中保持一致


特点
全局性: 可以在脚本中的任何地方使用,不受作用域的限制
不可修改: 一旦定义,全局常量的值不能在运行时修改或取消定义
整个脚本可见: 定义在脚本的顶层,所以在整个脚本中都可以访问

类常量:
类常量是在类的定义中使用 const 关键字定义的常量。与对象的属性不同,类常量是类的一部分,而不是类的实例的一部分。类常量在整个类的生命周期内保持不变,其值在运行时被解析。类常量通常用于表示与类相关的常量信息,例如类的版本号、作者等


特点:
不可修改: 一旦定义,类常量的值不能在运行时修改或取消定义
全局性: 可以在类的任何地方使用,不受作用域的限制
编译时求值: 类常量的值必须在编译时就可以确定,而不能在运行时计算

预定义常量

image.png 这些常量专门用于获取PHP中的信息,并且不允许开发人员随意修改

演示:

<?php
echo "PHP程序当前文件路径名:" .__FILE__;
echo "<br />";
echo "PHP程序当前行数:" .__LINE__;
echo "<br />";
echo PHP_VERSION;
echo "<br />";
echo PHP_OS;
?>

得到的结果为:

image.png

变量

定义

  • 概念:变量是用于存储信息的"容器":
  • 组成:在PHP中,变量是由$符号和变量名组成的。
  • 规则:变量名的命名规则与标识符相同。
  • 举例:如$number$_it为合法的变量名,而$123$*math为非法变量名。

规则

  • 只能由字母、数字、下划线组成,且不能包含空格
  • 只能以字母或下划线开头的任意长度的字符组成
  • 用做变量名时,区分大小写
  • 识符由多个单词组成,那么应使用下划线进行分隔(例如: user_name)

赋值

变量的赋值方法可以理解为:用$符号来定义一个变量,用一个或一段字母;通常来说按喜好用一个词来给$命名,然后接=来给这个已命名的变量一个参数,这个参数可以是任意一种数据类型。变量的赋值有两种方式

  1. 传值赋值
<?php
$a=1;    //变量a赋值为1,整型数据
$b='banana';    //变量b赋值为'banana',字符串型数据
$pi=3.14;    //变量pi赋值为3.14,浮点型数据
$V='夜之城好市民';    //变量V赋值为'夜之城好市民',字符串型数据

echo $a,
     '<br>',
     $b,
     '<br>',
     $pi,
     '<br>',
     $V;
?>

在这段代码中使用默认的传值赋值的方法分别将几个参数赋给了几个变量,用echo来输出一下得到的结果为:

image.png

  1. 引用赋值
<?php
$V='夜之城好市民';    //给变量V分配一个内存地址
echo $V,'<hr/>';    //此时的V还是夜之城好市民
$John=&$V;    //引用变量John的值赋给变量V,可以理解为,John与V分配到了同一个内存地址
$John='思想很极端';    //变量John的值是'思想很极端'
echo $V;    //此时与John共享一个地址空间的V受到了影响
?>

通过下图可以看出第一次echo$V的值还是夜之城好市民,而将$John的值引用给了$V后,$V受到了影响,值发生了变化,变成了$John的值

image.png

  • 变量与常量的区别已经可以体现出来了,常量的值永远不会发生改变。而变量可以通过各种各样的方法,比如引用其他变量的值而发生变化

超全局变量

超全局变量是在 PHP 中全局范围内自动可用的预定义变量,无需在函数或方法中使用 global 关键字声明。这些变量在脚本的任何地方都可以访问,包括函数、类、以及脚本的顶层。以下是一些常见的超全局变量

  1. $GLOBALS: 用于访问全局作用域中的变量。

    $x = 10;
    function example() {
        $y = 20;
        echo $GLOBALS['x'] + $y; // 输出 30
    }
    example();
    
  2. $_SERVER: 包含有关服务器和执行环境的信息。

    echo $_SERVER['PHP_SELF']; // 输出当前脚本的文件名
    
  3. $_REQUEST: 用于收集 HTML 表单提交的数据。

    $name = $_REQUEST['name'];
    
  4. $_GET: 用于收集通过 URL 参数传递的数据。

    $id = $_GET['id'];
    
  5. $_POST: 用于收集通过 POST 请求提交的数据。

    $username = $_POST['username'];
    
  6. $_FILES: 用于上传文件时收集文件的信息。

    $file = $_FILES['file'];
    
  7. $_COOKIE: 包含客户端发送的 Cookie。

    $user = $_COOKIE['user'];
    
  8. $_SESSION: 用于存储会话变量,可在不同页面间保持数据。

    $_SESSION['user_id'] = 123;
    
  9. $_ENV: 包含服务器环境变量。

    $serverName = $_ENV['SERVER_NAME'];
    

这些超全局变量在 PHP 中广泛使用,提供了方便的访问和管理方式,使开发者能够轻松地处理不同的数据来源和需求

数据类型

PHP中支持3类数据类型:

  1. 标量数据类型

  2. 复合数据类型

  3. 特殊数据类型

image.png

上述文章中,已引用并粗略的解释了一些数据类型,现在解释记录数据类型

在 PHP 中,有三种基本的数据类型:标量类型、复合类型和特殊类型。下面分别介绍这三种类型:

1. 标量类型

标量类型表示单一的值,PHP 中有四种标量类型:

  • 整数(int): 用于表示整数值,例如 42
  • 浮点数(float): 用于表示带有小数点的数值,例如 3.14
  • 字符串(string): 用于表示文本,可以使用单引号或双引号包裹,例如 'Hello'"World"
  • 布尔值(bool): 用于表示真true或假false,这个类型的数据一般用来作为一些特定条件下的判断工作
$integerVar = 42;
$floatVar = 3.14;
$stringVar = 'Hello';
$boolVar = true;

2. 复合类型

复合类型表示多个值组合在一起的数据结构,PHP 中有两种复合类型:

  • 数组(array): 用于存储多个值,可以是整数索引数组或关联数组

    $numericArray = array(1, 2, 3);
    $associativeArray = array('name' => 'John', 'age' => 25);
    
  • 对象(object): 用于创建自定义数据结构,由类实例化而来

    class Person {
        public $name;
        public $age;
    }
    
    $personObj = new Person();
    $personObj->name = 'John';
    $personObj->age = 25;
    

3. 特殊类型

特殊类型包括:

  • 资源(resource): 表示外部资源,例如数据库连接、文件句柄等
  • 空(null): 用于表示变量没有值或被赋予了空值
$resourceVar = fopen('example.txt', 'r');
$nullVar = null;

这三种基本数据类型在 PHP 中被广泛使用,开发者可以根据不同的需求选择合适的类型来存储和处理数据

数据类型检测

在 PHP 中,可以使用一些内置函数来检测变量的数据类型。以下是一些常用的检测数据类型的函数:

  1. gettype()

gettype() 函数用于获取变量的数据类型。它返回一个表示变量类型的字符串

$var = 42;
$type = gettype($var);
echo $type;  // 输出 "integer"
  1. is_int(), is_float(), is_string(), is_bool()

这些函数用于检测变量是否属于某个特定的标量类型

$var = 42;
if (is_int($var)) {
    echo 'Integer';
} else {
    echo 'Not an integer';
}
  1. is_array(), is_object(), is_resource(), is_null()

这些函数用于检测变量是否属于某个特定的复合类型或特殊类型

$arr = array(1, 2, 3);
if (is_array($arr)) {
    echo 'Array';
} else {
    echo 'Not an array';
}
  1. instanceof

instanceof 用于检测对象是否属于某个类的实例

class MyClass {
}

$obj = new MyClass();
if ($obj instanceof MyClass) {
    echo 'Instance of MyClass';
} else {
    echo 'Not an instance of MyClass';
}
  1. is_numeric(), is_scalar()

这些函数用于检测变量是否是数值或标量

$num = '42';
if (is_numeric($num)) {
    echo 'Numeric';
} else {
    echo 'Not numeric';
}
  1. empty()

empty() 函数用于检测变量是否为空(值为 0''nullfalse 或空数组时返回 true

$var = '';
if (empty($var)) {
    echo 'Variable is empty';
} else {
    echo 'Variable is not empty';
}

这些函数提供了一种简便的方式来检测变量的数据类型,可以根据需要选择适合的函数进行使用

数据类型转化

在 PHP 中,可以使用各种内置函数进行数据类型转换。以下是一些常见的数据类型转换方法:

  1. 强制类型转换

使用强制类型转换运算符,将一个数据类型转换为另一个。例如:

  • 整数转换: (int)intval()

    $floatVar = 3.14;
    $intVar = (int)$floatVar;
    // 或者
    $intVar = intval($floatVar);
    
  • 浮点数转换: (float)floatval()

    $intVar = 42;
    $floatVar = (float)$intVar;
    // 或者
    $floatVar = floatval($intVar);
    
  • 字符串转换: (string)strval()

    $intVar = 42;
    $strVar = (string)$intVar;
    // 或者
    $strVar = strval($intVar);
    
  • 布尔值转换: (bool)boolval()

    $strVar = 'false';
    $boolVar = (bool)$strVar;
    // 或者
    $boolVar = boolval($strVar);
    
  1. 自动转换

在某些情况下,PHP 会自动进行数据类型的转换,例如:

$intVar = 42;
$floatVar = $intVar; // 隐式转换为浮点数
  1. 使用内置函数

PHP 提供了一些内置函数来执行特定类型的转换:

  • settype() 函数: 将变量的类型进行转换

    $var = '42';
    settype($var, 'int'); // 将字符串转换为整数
    
  • intval() 函数: 获取变量的整数值

    $var = '42';
    $intVar = intval($var); // 将字符串转换为整数
    
  • floatval() 函数: 获取变量的浮点数值

    $var = '3.14';
    $floatVar = floatval($var); // 将字符串转换为浮点数
    
  • strval() 函数: 获取变量的字符串值

    $var = 42;
    $strVar = strval($var); // 将整数转换为字符串
    

这些方法可以根据需要选择,根据数据类型的不同进行灵活的转换。需要注意的是,在进行类型转换时,可能会发生数据丢失或精度损失,因此应该谨慎使用

运算符与优先级

运算符

  1. 算术运算符
  • +(加法)

用于将两个数相加

$a = 5;
$b = 3;
$result = $a + $b;  // 结果为 8
  • -(减法)

用于将右操作数从左操作数中减去

$a = 5;
$b = 3;
$result = $a - $b;  // 结果为 2
  • *(乘法)

用于将两个数相乘

$a = 5;
$b = 3;
$result = $a * $b;  // 结果为 15
  • /(除法)

用于将左操作数除以右操作数

$a = 6;
$b = 2;
$result = $a / $b;  // 结果为 3
  • %(取余)

用于计算左操作数除以右操作数的余数

$a = 7;
$b = 3;
$result = $a % $b;  // 结果为 1
  • **(幂运算)

用于将左操作数的值提高到右操作数的幂

$a = 2;
$b = 3;
$result = $a ** $b;  // 结果为 8
  1. 赋值运算符
  • =(赋值)

用于将右操作数的值赋给左操作数

$a = 5;
$b = $a;  // $b 的值变为 5
  • +=-=*=/=%=(运算符与赋值的组合)

用于执行运算并将结果赋值给左操作数

$a = 10;
$b = 5;

$a += $b;  // $a 等于 15($a = $a + $b)
$a -= $b;  // $a 等于 10($a = $a - $b)
$a *= $b;  // $a 等于 50($a = $a * $b)
$a /= $b;  // $a 等于 10($a = $a / $b)
$a %= $b;  // $a 等于 0($a = $a % $b)
  1. 比较运算符
  • ==(等于)

用于判断两个操作数是否相等,只比较值

$a = 5;
$b = '5';
$result = ($a == $b);  // 结果为 true
  • ===(全等于)

用于判断两个操作数是否相等,包括值和类型

$a = 5;
$b = '5';
$result = ($a === $b);  // 结果为 false
  • !=<>(不等于)

用于判断两个操作数是否不相等

$a = 5;
$b = '5';
$result = ($a != $b);  // 结果为 false
  • !==(不全等于)

用于判断两个操作数是否不全等

$a = 5;
$b = '5';
$result = ($a !== $b);  // 结果为 true
  • <><=>=(小于、大于、小于等于、大于等于)

用于比较两个数的大小

$a = 5;
$b = 3;
$result = ($a < $b);  // 结果为 false
  1. 逻辑运算符
  • &&and(逻辑与)

用于判断两个条件是否同时为 true

$x = true;
$y = false;
$result = ($x && $y);  // 结果为 false
  • ||or(逻辑或)

用于判断两个条件是否有一个为 true

$x = true;
$y = false;
$result = ($x || $y);  // 结果为 true
  • !(逻辑非)

用于取反一个条件

$x = true;
$result = !$x;  // 结果为 false
  • xor(异或)

用于判断两个条件是否不同

$x = true;
$y = false;
$result = ($x xor $y);  // 结果为 true
  1. 位运算符
  • &|^(与、或、异或)

用于对两个二进制数的每一位执行相应的位运算

$a = 5;  // 二进制 101
$b = 3;  // 二进制 011

$result1 = $a & $b;   // 1,二进制 101 & 011 结果为 001
$result2 = $a | $b;   // 7,二进制 101 | 011 结果为 111
$result3 = $a ^ $b;   // 6,二进制 101 ^ 011 结果为 110
  • ~(按位取反)

用于对一个二进制数的每一位取反

$a = 5;  // 二进制 101
$result = ~$a;  // -6,按位取反,结果为 1111111111111111111111111111111111111111111111111111111111111010
  • <<>>(左移、右移)

用于将一个二进制数向左或向右移动指定的位数

$a = 5;  // 二进制 101
$result1 = $a << 1;   // 10,左移一位,结果为 1010
$result2 = $a >> 1;   // 2,右移一位,结果为 10
  1. 字符串运算符
  • .(字符串连接)

用于将两个字符串连接在一起

$str1 = 'Hello';
$str2 = ' World';
$concatenated = $str1 . $str2;  // 'Hello World'
  1. 递增和递减运算符
  • ++(递增)

用于将操作数的值增加1

$a = 5;
$b = ++$a;  // $a 等于 6,$b 也等于 6
  • --(递减)

用于将操作数的值减少1

$a = 5;
$b = --$a;  // $a 等于 4,$b 也等于 4
  1. 错误控制运算符
  • @(抑制错误)

用于抑制表达式可能产生的错误信息

$result = @file_get_contents('nonexistent_file.txt');
// 如果文件不存在,不会产生错误提示

请注意,使用错误控制运算符 @ 可能会使得在调试时难以发现潜在的问题,因此应谨慎使用

  1. instanceof 运算符

用于判断一个对象是否属于某个类的实例

class MyClass {
}

$obj = new MyClass();
$result = $obj instanceof MyClass;  // 结果为 true
  1. 三元运算符
  • ? : 条件运算符,用于简化 if-else 语句
$age = 18;
$canVote = ($age >= 18) ? 'Yes' : 'No';
echo $canVote;  // 输出 'Yes'

上述运算符包括了 PHP 中常见的运算符,每个运算符都有特定的用途和规则。根据实际需求,选择适当的运算符来执行相应的操作

优先级

在 PHP 中,运算符有不同的优先级,决定了它们在表达式中的执行顺序。以下是一些常见运算符的优先级,从高到低:

  1. 递增和递减运算符 (++, --)
  2. 逻辑非 (!)
  3. 异或 (xor)
  4. 乘法、除法、取余 (*, /, %)
  5. 加法、减法 (+, -)
  6. 按位移动 (<<, >>)
  7. 按位与 (&)
  8. 按位异或 (^)
  9. 按位或 (|)
  10. 比较运算符 (<, <=, >, >=)
  11. 相等性运算符 (==, !=, ===, !==)
  12. 逻辑与 (&&, and)
  13. 逻辑或 (||, or)
  14. 三元条件运算符 (? :)
  15. 赋值运算符 (=, +=, -=, *=, /=, %=, .=, &=, |=, ^=, <<=, >>=)
  16. 逻辑与 (and)
  17. 逻辑或 (or)
  18. 逻辑异或 (xor)

在表达式中,具有较高优先级的运算符会先执行,然后是优先级较低的运算符。如果不确定优先级,可以使用括号来明确运算的顺序

例如:

$result = 2 + 3 * 4;  // 先乘法,再加法,结果为 14

在这个例子中,乘法运算符的优先级高于加法运算符,因此先执行乘法,再执行加法

流程控制语句

在 PHP 中,流程控制语句用于控制程序的执行流程。以下是几种常见的流程控制语句:

条件语句

  • if 语句
$condition = true;

if ($condition) {
    // 条件为 true 时执行
    echo "条件为 true";
} else {
    // 条件为 false 时执行
    echo "条件为 false";
}
  • else if 语句
$grade = 75;

if ($grade >= 90) {
    echo "优秀";
} elseif ($grade >= 80) {
    echo "良好";
} elseif ($grade >= 70) {
    echo "中等";
} else {
    echo "不及格";
}

循环语句

  • for 循环
for ($i = 0; $i < 5; $i++) {
    echo $i;  // 输出 01234
}
  • while 循环
$i = 0;

while ($i < 5) {
    echo $i;  // 输出 01234
    $i++;
}
  • do-while 循环
$i = 0;

do {
    echo $i;  // 输出 01234
    $i++;
} while ($i < 5);
  • foreach 循环(用于数组遍历)
$colors = array("red", "green", "blue");

foreach ($colors as $value) {
    echo $value;  // 输出 redgreenblue
}

结构选择语句

  • switch 语句

用一种清晰的方式来处理多个可能的情况

$day = "Monday";

switch ($day) {
    case "Monday":
        echo "星期一";
        break;
    case "Tuesday":
        echo "星期二";
        break;
    case "Wednesday":
        echo "星期三";
        break;
    default:
        echo "其他";
}

跳转语句

  • break 语句

用于终止循环。

for ($i = 0; $i < 10; $i++) {
    if ($i == 5) {
        break;  // 循环在 i 等于 5 时终止
    }
    echo $i;  // 输出 01234
}
  • continue 语句

用于跳过当前循环的剩余代码并开始下一次循环。

for ($i = 0; $i < 5; $i++) {
    if ($i == 2) {
        continue;  // 循环在 i 等于 2 时跳过
    }
    echo $i;  // 输出 0134
}

以上是 PHP 中常见的流程控制语句,它们用于根据条件执行不同的代码块,控制循环的执行,以及根据不同的情况进行分支处理

文件包含语句

在 PHP 中,文件包含语句主要有两种:includerequire。它们用于在一个文件中包含另一个文件的内容。

  1. include 语句

include 语句用于将指定文件的内容包含到当前文件中。如果包含文件不存在或出错,include 会产生一个警告,但脚本会继续执行。

// include_example.php
$variable = "Hello, World!";
// main.php
include "include_example.php";
echo $variable;  // 输出:Hello, World!
  1. require 语句

require 语句也用于将指定文件的内容包含到当前文件中,但与 include 不同的是,如果包含文件不存在或出错,require 会产生一个致命错误,脚本会停止执行。

// require_example.php
$variable = "Hello, World!";
// main.php
require "require_example.php";
echo $variable;  // 输出:Hello, World!
  1. include_once 和 require_once

这两个语句与 includerequire 类似,但它们会在包含文件之前检查是否已经包含过,以避免重复包含。如果已经包含过,就不会再次包含。

// include_once_example.php
$variable = "Hello, World!";
// main.php
include_once "include_once_example.php";
include_once "include_once_example.php";  // 不会再次包含
echo $variable;  // 输出:Hello, World!

需要注意的点

  1. 路径问题: 文件包含语句中的路径可以是相对路径或绝对路径。相对路径是相对于当前执行脚本的路径
  2. 安全性: 避免包含不受信任的文件,以防止代码注入等安全问题。最好使用相对路径,并限制包含文件的范围
  3. 文件不存在处理: 在使用 includerequire 时,最好进行文件是否存在的检查,以避免错误

文件包含语句是 PHP 中用于模块化和重用代码的重要工具,可以将一些通用的功能、配置或库文件包含到不同的脚本中,提高代码的可维护性和可复用性

此文章为本人的php学习笔记,其中包含对于这个语言的个人理解,欢迎指正