基础知识
基础知识
php是什么?
PHP(PHP: Hypertext Preprocessor,超文本预处理器的缩写),是一种被广泛应用的开放源代码的、基于服务器端的用于产生动态网页的、可嵌入HTML中的脚本程序语言,尤其适合 WEB 开发。
当客户端向服务器的程序提出请求时,web服务器根据请求响应对应的页面,当页面中含有php脚本时,服务器会交给PHP解释器进行解释执行,将生成的html代码再回传给客户端,客户端的浏览器解释html代码,最终形成网页格式的页面。
执行方式
PHP 代码被包含在特殊的起始符和结束符中,使得网页的脚本可以进出“PHP 模式”。其它用 C 或 Perl 语言写的脚本,需要用大量的命令来编写程序以输出 HTML ,而用PHP 编写一个 HTML 脚本,只需嵌入了一些代码来完成操作(例如,在本例中输出了一些文本)。 和客户端的 JavaScript 不同的是,PHP 代码是运行在服务端的。如果在服务器上建立了如上例类似的代码,则在运行该脚本后,客户端就能接收到其结果,但他们无法得知其背后的代码是如何运作的。甚至可以将 web 服务器设置成让 PHP 来处理所有的 HTML 文件,这么一来,用户就无法得知服务端到底做了什么。
我的PHP运行环境
由于我自己有一台学生机,上面我已经安装过了typecho所以服务器上有lmnp环境,所以我通过vscode写php通过winscp上传到服务器通过我自己的二级域名(life.hesifan.top)访问实验.
C/S与B/S结构
C/S结构
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构
B/S结构
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
PHP的标记风格
<?php
… …
?>
这是PHP推荐使用的标记风格。服务器管理员不能禁用这种风格的标记。
分号
PHP用分号来分隔简单的语句。复合语句用大括号来标记代码块,如条件测试或循环,在大括号后面不要用分号。和其他语言不一样的是,在PHP中右括号(?>)前的分号不是必选的。
空白和换行符()
一般来说,空白符在PHP中无关紧要。可以将一个语句展开成任意行,或者将语句紧缩在一行。 可以利用这个灵活的格式来使代码更具有可读性(通过排列分配、缩进等)。一些懒惰的程序员利用这种自由的格式创建根本无法阅读的代码,这是不提倡的。
程序的注释
PHP支持C、C++和Shell脚本风格的注释,如下:
// 单行注释
/* ...*/ 多行注释 (注意:不能嵌套)
# 脚本注释
查看数据
echo
输出一个或多个变量,他不是函数,不需要使用括号,如果输出多个请用逗号分隔
echo 1,2,3,4;
var_dump
打印变量的相关信息
var_dump(1234);
区别:echo 是直接输出,var_dump输出和带有变量类型
变量知识
定义变量
PHP是弱类型语言,不像其他语言需要对变量进行类型声明。PHP中以 $(美元) 作为前缀来定义变量,以a~z(大小写)或 _ 下划线定义变量名。
下面是合法的变量名
$HF = 'hesifan.top';
$_name = 'FanHeart';
下面是非法的变量声明
$0530 = 'baidu.com'
$&* = 'blog.csdn.net'
弱类型
PHP是一种非常弱的类型语言。在大多数编程语言中,变量只能保持一种类型的数据,而且这个类型必须在使用变量前声明,例如C语言中。
而在PHP中,变量的类型通常不是由程序员设定的,确切地说,是根据该变量使用的上下文在运行时(即变量的值)决定的。
简单来说,var = 1
;就是数字,var2 = '1'
就是字符串,变量类型是由值决定的。
传值与引用
传值赋值
直接使用 = 将变量的值赋值给另一个变量。
<?php
//传值赋值
$a = 1;
$b = $a;
$b = 3;
echo $a;
echo $b;
// 输出13
?>
将一个变量的内存地址赋值给另一个变量的行为即传址赋值。需要在 = 等号前加上 &
引用符号,这样两个变量指向内存中的一个地址,任何一个变量的改变都影响到另一个变量,有点类似于快捷方式的概念。
<?php
//引用赋值(传址赋值)
$a = 1;
$b = &$a;
$b = 3;
echo $a;
echo $b;
// 输出33
echo '<hr/>';
$a = 9;
echo $a;
echo $b;
// 输出99
?>
可变变量
可以变量即使用一个变量的值,作为另一个变量名。
<?php
$a = 'hello'; //普通变量
$$a = 'world'; //可变变量 等价于 $hello = 'world'
echo $a;
echo $$a;
echo $hello;
echo "$a ${$a}"; //输出hello world
echo "$a $hello"; //输出hello world
?>
变量作用域
变量作用域指变量在代码中可以访问的位置。
超全局变量
可以代码的任何位置都可以访问的变量
<?php
var_dump($_GET);
function show()
{
print_r($_GET);
}
show();
?>
变量 | 说明 |
---|---|
$_GET | 地址栏GET提交 |
$_POST | 表单POST提交 |
$_FILES | 文件上传变量 |
$_SESSION | 会话变量 |
$_COOKIE | cookie值变量 |
$_GLOBALS | 全局变量 |
$_REQUEST | 包含$_GET 、$_POST 、$_COOKIE |
$_SERVER | 服务器环境变量 |
全局变量
全局声明(函数外声明)的变量会保存在$_GLOBALS
中,函数内默认不能访问到全局变量,在函数中访问需要使用 global 关键字。
<?php
$name = 'FanHeart';
function show()
{
//echo $name ; 这时该普通变量就不在变量作用域无法访问
global $name;
echo $name;
//利用global引入全局变量,但不推荐使用这种方法,会造成变量污染
echo $GLOBALS['name'];
//使用全局数组$GLOBALS调⽤用全局变量。推荐使用这个方法
}
show();
?>
也可以使用全局数组$GLOBALS
调⽤用全局变量量。 如:
$GLOBALS['name'];
检测变量
通过isset 函数可以检测变量是否定义。
<?php
$name = 'FanHeart';
var_dump(isset($name));
//检测变量若无则输出false若有则为true
?>
变量销毁
php在全部代码执行结束后会删除所有变量,也使用 unset 函数可以在程序运行中删除变量。
<?php
$name = 'FanHeart';
unset($name);
var_dump(isset($name));
//输出false说明变量已经被删除了
?>
全局变量不能在函数中删除
<?php
$name = 'FanHeart';
function show()
{
global $name;
unset($name);
echo $name;
}
show();
echo $name;
//依然可以输出一个FanHeart,但是对于该函数内此变量被删除了。
?>
静态变量
PHP支持声明函数变量为静态的(static)。一个静态变量在所有对该函数的调用之间共享,并且仅在脚本的执行期间函数第一次被调⽤时被初始化。 要声明函数变量为静态的⽤关键字static。通常静态变量的第一次使⽤用时赋予⼀个初始值。
<?php
function calculation()
{
$num = 1;
$num = $num + $num;
return $num;
}
echo calculation();
echo calculation();
echo calculation();
//三次输出都是2
?>
<?php
function calculation()
{
static $num = 1;
$num = $num + $num;
return $num;
}
echo calculation();
echo calculation();
echo calculation();
//三次输出分别为248,这样就实现了变量的循环调用
?>
数据类型
使用不同数据类型储存不同数据,就像我们家里面放衣服和放洗手液会使用用不同的容器一样。下面是常用PHP数据类型表:
类型 | 说明 |
---|---|
integer | 整型 |
float | 浮点型 |
string | 字符串 |
boolean | 布尔型 |
array | 数组 |
object | 对象 |
整型
整型可以是十进制、八进制、十六进制。
php函数可以轻松实现进位制的转化
如十六进制转化十进制函数hexdc()
<?php
var_dump(hexdec(FFF);
//输出int(4095)
?>
其他进位制之间的转化函数如下
bindec() //二进制转换为十进制
decbin() //十进制转换为二进制
dechex() //十进制转换为十六进制
decoct() //十进制转换为八进制
hexdec() //十六进制转换为十进制
octdec() //八进制转换为十进制
base_convert(number,frombase,tobase)//任意进位制之间的转化
任意进位制转化实例及其参数说明如下
<?php
$oct = "0530";
$dec = base_convert($oct,8,10);
echo "八进制的 $oct 等于十进制的 $dec。";
?>
参数 | 描述 |
---|---|
number | 必需,原始值 |
frombase | 必需,原进制 |
tobase | 必需,目标进制 |
浮点数
浮点数表示实数,可理解为有限或无限小数。
布尔型
当转换为 boolean 时,以下值被认为是FALSE
布尔值 | FALSE |
---|---|
整型值 | 0(零) |
浮点型值 | 0.0(零) |
字符串 | 空白字符串 |
字符串 | “0” |
数组 | 没有成员变量的数组 |
特殊类型 | NULL(包括尚未设定的变量) |
所有其它值都被认为是 TRUE
字符串
引号
字符串可以用双引号""
或 ''
号包含,区别是双引号中可以解析变量。
<?php
$string = "hesifan.top";
echo "FanHeart的网站{$string}!"
//双引号可以解析变量输出为FanHeart的网站hesifan.top!单引号则为FanHeart的网站$string!用花括号可以避免变量错误,因为若变量后面有符合变量规范的字符会和被当作变量名
?>
用花括号可以避免变量错误,因为若变量后面有符合变量规范的字符会和被当作变量名
header响应头设置解决中文乱码问题
header('Content-type:text/html;charset=utf-8');
转义符\
转义是将有多种含义的字符进行转换,比如 $即是变量前缀也是美元符号,就需要转义在不同场景进行改变。
<?php
$string = "FanHeart \"hesifan.top\"";
echo $string;
echo '输出\\';
echo '<hr/>';
echo "定义变量方法\t\$string = 'hesifan.top'";//输出定义变量方法$string = 'hesifan.top'
?>
定界符<<<
文本表现的就和双引号字符串一样,在定界符文本中不需要转义引号,适合输入大量文本。
<?php
$str=<<<html
<h1 style="color:pink">hesifan.top</h1>
<script>
document.write('FanHeart');
</script>
html;
echo $str;
?>
结束符必须从第一列开始,并且后面除了分号以外不能包含任何其他字符,空格也不可以。
连接符.
多个字符串使用 . 符号连接
<?php
$string1 = 'FanHeart';
$string2 = 'hesifan.top';
echo $string1.'=>'.$string2;
?>
常用函数
strlen()
— 取得字符串长度传度的函数
<?php
$string = 'blog.hesifan.top';
echo strlen($string);
echo '<hr/>';
$string = '凡尘纪';
echo mb_strlen($string,utf8);
// 中文是宽字节一个汉字等于3个字节
?>
需要使用函数时优先查找使用php文档里的提供的函数效率最高
trim
截去字符串首尾的内容
<?php
$string = ' hesifan.top ';
echo strlen(trim($string,' pot'));
# 从前后删除 pot和空格字符
?>
rtrim
从右侧删除、ltrim
从左侧删除
<?php
$string = ' hesifan.top ';
echo strlen(rtrim($string,' pot'));
?>
函数 | 作用 |
---|---|
strtolower | 字母转为小写 |
strtoupper | 字母转大写 |
ucfirst | 将字符串的首字母转换为大写 |
ucwords | 将字符串中每个单词的首字母转换为大写 |
<?php
$string = ' hesifan.top ';
echo strlen($string);//输出13
echo trim($string,' pot.');//输出hesifan
echo strtolower('Hello World');//输出hello world
echo strtoupper('hello world');//输出HELLO WORLD
echo ucfirst('hello world');//输出Hello world
echo ucwords('hello world');//输出Hello World
?>
md5
计算字符串的 MD5 散列值,以 32 字符十六进制数字形式返回散列值.
原来用于账户密码加密
现在可以用于存储用户信息
不要单纯理解为加密,他的特点时不可逆的生成一个32位hexo字符串
<?php
$file = 'user-1-info';
echo md5($file).'.php';
$view = 'admin/master.php';
echo md5($view).'.php';
?>
explode
使用一个字符串分割另一个字符串
<?php
$arr = (explode('.','hesifan.top'));
echo $arr[0];
echo '<hr/>';
echo $arr[1];
?>
php 中有顺序时从0开始
处理图像文件类型(后面会有更好的方式,仅用于举例)
<?php
$file = 'card.jpg';
$arr =explode('.',$file);
print_r($arr).'<hr/>';//输出Array ( [0] => card [1] => jpg )
echo $arr[1];//这样就输出了文件格式jpg啦
?>
implode
将一个一维数组的值转化为字符串
<?php
$arr =['email','3447851674@qq.com'];
echo implode(':',$arr);//输出email:3447851674@qq.com完成合并
?>
substr
返回字符串的子串,截取函数
<?php
$file = 'user.webp';
echo substr($file,0,-5);//输出user从第一个截到倒数五个
$ad = '欢迎大家访问我的网站';
echo mb_substr($ad,4,-4,'utf-8');//输出访问
?>
strstr
查找字符串的首次出现
<?php
$email = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // 输出 @example.com
?>
strrchr
查找指定字符在字符串中的最后一次出现
<?php
$file = 'user.jpg';
echo strrchr($file, '.'); // 输出.jpg
?>
strpos
查找字符串首次出现的位置,如果没找到,将返回 FALSE
<?php
$name ='FanHeart';
echo strpos($name, 'a'); // 输出1
?>
strrpos
计算指定字符串在目标字符串中最后一次出现的位置
<?php
$name ='FanHeart';
echo strrpos($name, 'a'); // 输出5
?>
str_replace
子字符串替换
<?php
echo str_replace('hesifan', 'blog.hesifan', 'hesifan.top'); //输出blog.hesifan.top
echo str_replace(['小猫','小狗'], '*', '我家有一只可爱的小猫和小狗');//输出我家有一只可爱的*和*
echo str_replace(['小猫','小狗'], ['喵喵','汪汪'], '我家有一只可爱的小猫和小狗'); //输出我家有一只可爱的喵喵和汪汪
?>
NULL
NULL数据类型只有一个值NULL。
1.变量未被赋予任何值
2.变量被赋值为NULL
3.被unset()函数处理后的变量
$a; //变量 $a未被赋予任何变量,值为NULL
$b = NULL; //变量 $b被赋值为NULL
$c = 10;
unset($c);
//使用unset()函数处理后,$c为NULL
相关函数
getType()
<?php
$num = 1234;
$type = gettype( $num);
var_dump( $type);
$var = true;
$bool = is_bool( $var);
var_dump( $bool);
//检测是否为布尔型
$int = 1234;
$bool = is_int($int);
var_dump($bool);
//检测是否为整型
$num = 1.1234;
$bool = is_float($num);
var_dump($bool);
//检测是否为浮点数
$string = 'FanHeart';
$bool = is_string($string);
var_dump($bool);
//检测是否为字符串
$var = null;
$bool = is_null($var);
var_dump($bool);
//检测是否为NULL
?>
类型转换
自动转换
PHP类型根据值,自动转换
<?php
$num1 = '1';
$num2 = '2';
echo $num1 + $num2; # 字符串转为数字相加
?>
常量使用
常量是一个简单值的标识符(名字)。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
常量特性
- 常量前面没有美元符号($)
- 常量只能用define() 函数定义,而不能通过赋值语句
- 常量一旦定义就不能被重新定义或者取消定义
- 常量的值用来定义 整型,浮点,字符串,布尔值,数组(PHP7新增)
- 常量可以不用理会变量范围的可以在任何位置访问
声明常量
常量可以使用 const 和 define 定义。
<?php
define('NAME','FanHeart',true);
//define('NAME','HSF');//常量规范常量大写
echo NAME;
const URL = 'hesifan.top';
echo '<hr/>';
echo URL;
function show(){
echo URL;
echo NAme;
}
show();
echo '<hr/>';
echo PHP_VERSION;
echo '<hr/>';
echo PHP_OS;
class demo{
public function show(){
echo __METHOD__;
}
}
(new demo())->show();
print_r(get_defined_constants(categorize:true));
?>
const
是语言结构,在编译时要比define
快,define
可以设置第三个参数为true,来定义不区分大小写的常量,类文件中定义常量也使用const
,所以用const
统一易读。
define('常量名',值);
define('WEBNAME','houdunwang');
echo WEBNAME;
常量检测
$bool = defined('WEBNAME');
var_dump($bool); // 结果是false
系统常量
__DIR__ 文件所在目录
__FILE__ 文件路径
__LINE__ 程序代码行号
PHP_VERSION 显示PHP版本
PHP_OS 显示服务器的操作系统版本
TRUE boolean值真(true)支持小写常量
FALSE boolean值假(false)支持小写常量
__FUNCTION__ 函数名称
__METHOD__ 方法名称
__CLASS__ 类名称
使用函数 get_defined_constants(true) 可以获取当前可使用的所有常量。
运算符
算术运算符
<?php
$a = 3;
$b = 4;
echo $a%$b;//输出3
echo $a++;//输出3,后加后减时先赋值后加减,所以输出时还是原值,但还是进行了加减在输出$a则为4
echo --$a;//输出2
?>
运算符 | 说明 |
---|---|
$a+$b | 加法 $a和$b的和 |
$a-$b | 减法 $a和$b的差 |
$a*$b | 乘法 $a和$b的积 |
$a/$b | 除法 $a除以$b的商 |
$a% $b |
取模 $a除以$b后的余 |
++$a 前加 $a 的值先加一,然后进行操作 | |
$a++ | 后加 $a 的值先进行操作,后加一 |
–$a | 前减 $a 的值先减一,然后进行操作 |
$a– | 后减 $a 的值先进行操作,后减一 |
赋值运算符
$a *= $b;
等价于
$a = $a*&b ;
运算符 | 说明 |
---|---|
= | 右边值赋值给左边变量 |
+= | 左边值加上右边值赋值给左边变量 |
-= | 左边值减掉右边值赋值给左边变量 |
*= | 左边值乘以右边值赋值给左边变量 |
/= | 左边值除以右边值赋值给左边变量 |
.= | 左边字符串连接到右边变量后面 |
%= | 左边值对右边值取余数后赋值给左边变量 |
字符串运算符
运算符 | 说明 |
---|---|
. | 它返回其左右参数连接后的字符串 |
.= | 左边字符串连接到右边变量后面 |
比较运算符
<?php
$a = 0;
$b = false;
var_dump($a == $b);//输出真,两个等号会进行转换,三个为假
?>
运算符 | 说明 |
---|---|
$a==$b | 等于 TRUE,如果$a等于$b |
$a===$b | 全等于 TRUE,如果$a等于$b,并且类型也相同 |
$a!=$b | 不等 TRUE,如果$a不等于$b |
$a<>$b | 不等 TRUE,如果$a不等于$b |
$a!==$b | 非全等 TRUE,如果$a不等于$b,或者类型不同 |
$a<$b | 小于 TRUE,如果$a严格小于$b |
$a>$b | 大于 TRUE,如果$a严格$b |
$a<=$b | 小于等于 TRUE,如果 $a 小于或者等于$b |
$a>=$b | 大于等于 TRUE,如果 $a 大于或者等于$b |
逻辑运算符
运算符 | 说明 |
---|---|
$a and $b | 逻辑与 TRUE,如果 $a 与 $b 都为 TRUE |
$a or $b | 逻辑或 TRUE,如果 $a 或 $b 任一为TRUE |
!$a | 逻辑非 TRUE,如果 $a 不为 TRUE |
$a && $b | 逻辑与 TRUE,如果 $a 与 $b 都为TRUE |
$a 或 $b | 逻辑或 TRUE,如果 $a 或 $b 任一为TRUE |
and
与&&
、or
与||
是同一逻辑运算符的两种写法,但优先级不同。这四个符号的优先允许从高到低是:&&
、||
、AND
、OR
。
三元表达式
变量=(表达式)?值1:值2; 当表达式的返回值为true时,$变量被赋予值1,否则被赋予值2
<?php
$var = 1;
$true = '真';
$false = '假';
echo $var?$true:$false;
//通过第一个值的真假来控制输出第二个值还是第三个为真则二为假则三
?>
PHP 7 新增加的 NULL 合并运算符(??)是用于执行isset()检测的三元运算的快捷方式。 ?: 只判断 true 或 false ,而 ?? 判断变量存在并且值不为null
<?php
$var = null;
echo $var??'no';//输出no
$var = '1';
echo $var??'no';//输出1
/*若第一个值不存在或为null则输出第二个值反之存在则输出第一个值
*同时具有输出,和检测是否为空的功能
*/
//若用?:则要用isset函数检测如
//echo $var?'yes':'no';若$var不存在会报错
echo isset($var)?'yes':'no';//这样就可以实现检测
?>
屏蔽错误
@ 运算符用于屏蔽表达式警告错误
@(20/0);
流程控制
if/else/elseif
当条件表达式的值为真(true)时,PHP将执行语句组,相反条件表达式的值为假(false)时,PHP将不执行语句组,忽略语句组执行下面的语句。
花括号形式
<?php
$status = false;
if($status){
echo 'FanHeart';
}
else{
echo 'hesifan.top';
}
?>
简化形式适合夹套书写html
<?php
$status = false;
if($status):
?>
<h1>真</h1>
<?php
else:
?> f
<h1>假</h1>
<?php
endif;
?>
多条件的
<?php
$age = 10;
if($age<15){
echo '儿童';
}
elseif($age<30){
echo '青年';
}
elseif($age<50){
echo '中年';
}
else{
echo '老年';
}
?>
<?php
$age = 10;
if($age<15):
echo '儿童';
elseif($age<30):
echo '青年';
elseif($age<50):
echo '中年';
else:
echo '老年';
endif;
?>
switch
switch设置多个执行代码块,break指令终止向下执行,default为上面条件都不满足时执行的默认代码块。
<?php
switch ($status) {
case 'success':
echo '成功';
break;
case 'error':
echo '错误';
break;
case 'warning':
echo '警告';
break;
}
?>
也可以使用以下写法
<?php
switch ($status) :
case 'success':
echo '成功';
break;
case 'error':
echo '错误';
break;
case 'warning':
echo '警告';
break;
endswitch;
while
当while循环语句中表达式(循环控制语句)的结果为真时,程序将反复执行同一段程序:循环体( while中的语句或语句序列),直到满足一定的条件(表达式的结果为假时)后才停止执行该段程序。
<?php
$num = 10;
while ($num>0) {
echo($num--).'<br/>';
}
//也可以使用以下写法
$num = 10;
while ($num>0):
echo($num--).'<br/>';
endwhile;
?>
do…while
与while的差别是条件后判断。
<?php
$num = 10;
do {
echo($num--).'<hr/>';
} while ($num>0);
?>
for
for(表达式1;表达式2;表达式3){
语句或语句序列;
}
// 表达式1为循环初始条件;
// 表达式2为循环控制条件;
// 表达式3为控制变量递增;
<?php
for ($num=10;$num>0;$num--) {
echo $num.'<hr/>';
}
// 也可以使用以下写法
for ($num=10;$num>0;$num--) :
echo $num.'<hr/>';
endfor;
?>
break 与 continue
break
我们之前在 switch 条件判断中已经使用过 break 关键字,它会使得程序流程离开 switch 本体中的语句,如果 break 使用在 for、while 或 do-while 循环结构中时,将会使得程序离开该层循环。
<?php
do {
if (!isset($num)) {
$num=10;
}
if ($num==0) {
break;
}
echo($num--).'<hr/>';
} while (true);
?>
break 在多层循环嵌套使用时,可以指定跳转出层数。
<?php
$num=0;
while (true):
$num++;
switch ($num) {
case $num%2==0:
echo $num."<hr/>";
break;
case $num%15==0:
echo $num."<hr/>";
break 2;
}
endwhile;
?>
continue
continue 的作用与 break 有点类似,continue 若使用在 for、while 或 do-while循环结构中,当程序执行至 continue 时,之后的语句将直接被略过,而直接执行下一次的循环动作。
<?php
for ($num=10;$num>0;$num--) {
if(!($num%2))continue;
echo $num.'<hr/>';
}
?>
文件引入
include & require
使用include和require 将文件导入,就像把该文件粘贴到使用函数的地方。
include( )与require ( )区别在于错误处理方式,当引入产生错误时include( )产生一个警告而require( )则导致一个致命错误。
<?php
include './test.php';
echo 'test'; //如果test.php文件不存在会报一个warning错误,但是可以输出test
?>
可以使用 @ 屏蔽incluce加载警告错误
<?php
if (!@include 'a.php') {
echo '文件不存在';
}
?>
require 加载失败时将终止程序执行
require './test.php';
echo 'test'; //如果test.php文件不存在会报一个fatal错误,不可以输出test