PHP简介
- PHP(全称:PHP:Hypertext Preprocessor,即”PHP:超文本预处理器”)是一种通用开源脚本语言。
- PHP 脚本在服务器上执行。
- PHP 可免费下载使用。
- PHP 文件的默认文件扩展名是 .php。
- PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
PHP的学习
基本语法
1 | |
PHP中的注释
1 | |
变量
定义变量:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
1 | |
超全局变量
PHP预定义变量,也称为超全局变量,是在PHP脚本的任何地方都可以访问的内置变量。这些变量用于存储有关PHP运行环境的全局信息,例如服务器信息、客户端请求数据、会话信息等。

打印变量
echo函数:
1 | |
print函数:
只允许输出一个字符串,返回值总为 1
1 | |
echo和print的区别:
echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
print_r函数:
可以输出stirng、int、float、array、object等
输出array时会用结构表示,print_r输出成功时返回true
例如:
1 | |
结果:

var_dump()函数
var_dump() 函数用于输出变量的相关信息。
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
例如:
1 | |
结果:

删除变量
unset函数
1 | |
变量作用域
PHP 有四种不同的变量作用域:
- local
- global
- static
- parameter
注意:在函数内定义的变量是局部变量只能在函数内调用,在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字
判断变量是否存在
1 | |
数据类型
基本类型
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
- Resource(资源类型)
类型转换
1.自动转换:系统自己判定自己转换
2.强制类型转换:echo (类型)变量名;
说明:
1.bool true=1,false=0
2.以字母开头的字符串,永远为0;
3.以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
类型比较
1.松散比较:使用两个等号==比较,只比较值,不比较类型
例如:42==”42” 返回true
2.严格比较:用三个等号===比较,不仅比较值,还比较类型
例如: 42===”42” 返回false
运算符
比较运算符
===全等于 当左边和右边的值和数据类型都相同是返回true
!==不绝对等于 当左边和右边的值不等时或者数据类型不相同时返回true
其他和c一样
组合比较符
1 | |
- 如果 $a > $b, 则 $c 的值为 1。
- 如果 $a == $b, 则 $c 的值为 0。
- 如果 $a < $b, 则 $c 的值为 -1。
运算符优先级
优先级: && > = > and
优先级: || > = > or
其他和c一样
并置运算符(字符串运算符)
并置运算符 (.) 用于把两个字符串值连接起来
$a .= $b 表示将$a后面接上$b
echo $a.$b; 也可直接输出$a.$b
1 | |
EOF定界符
EOF定界符:主要用于定义一个字符串,该字符串可以跨越多行,并且能够保持原有的格式和换行符
格式:
$a = <<<EOF
…
EOF;
EOF定界符的优点和适用场景:
- 保持格式:Heredoc能够保持字符串内部的格式和换行符,适合输出大量HTML或JavaScript代码2。
- 变量解析:在Heredoc中,变量会被正常解析,这使得在输出大量文本时更加方便和灵活12。
- 减少转义:在Heredoc中不需要对特殊字符进行转义,简化了字符串的处理过程
例如:
1 | |
逻辑运算符
和c一样
三元运算符
1 | |
和c一样
回车换行符
PHP_EOL:回车换行
条件判断
if语句
if…else语句
if…elseif…else语句
switch语句
和c一样
循环
while循环和for循环
for循环和c差不多
while循环do while循环和c差不多
break 跳出循环
continue 跳到下次循环
exit 退出程序
foreach
foreach 循环用于遍历数组。
1 | |
例如:
1 | |
输出结果:

数组
数值数组
数值数组的定义:$arr = array(“…”,”…”,”…”);
例如:
1 | |
关联数组
关联数组有点像c++里的map容器和python的字典
键值对:一个键对应一个值
关联数组的定义:$arr = array(“…”=>”…”,”…”=>”…”,”…”=>”…”);
例如:
1 | |
遍历数组
和c差不多就多了个foreach有点像c++的auto遍历
1 | |
多维数组
数值数组:会自动分配键值,从0开始
1 | |
关联数组:指定键
1 | |
数组相关函数
常用函数:

排序函数:

函数
函数的定义
function 函数名(变量名)
{
…
return (返回值);
}
注意:如果要在函数内调用全局变量前面要加global;
例如
1 | |
字符串
常用字符串函数
trim() 删除字符串两端的空格和其他预定义字符(比如\r,\n)
1 | |
dirname() 返回路径中的目录部分
1 | |
strlen() 获取字符串的长度
strpos()函数 用于在字符串内查找一个字符或指定文本
htmlspecialchars() 预定义字符转html实体编码,只格式化&,’,”,<,>这几个特殊符号
substr() 截取字符串
其他常用字符串函数:

时间日期函数
1 | |
常量
定义常量
方式1:define(‘常量名’,’常量’);
方式2:const 常量名 = 常量值;
区别:
1.define定义的常量名可以是特殊符号,若是特殊符号,则需要用echo constant(’ 常量名’)来打印;const 不能用特殊符号;
2.const不能用于if判断中
3.const用于类成员变量的定义,define不可用
预定义常量
系统自带的常量,可直接使用
PHP_VERSION:当前 PHP 解析器的版本。
PHP_OS:服务器的操作系统。
PHP_INT_MAX:最大的整数值。
E_ERROR、E_WARNING、E_PARSE 等:错误报告级别
魔术常量
魔术常量值随着它们在代码中的位置改变而改变
双下划线+常量名+双下划线
1 | |
文件
文件和目录操作
文件写入:
file_put_contents(文件名)
如果找不到该文件,会自动创建,先清空再写入内容
1 | |
文件读取:
readfile(文件名); 读取文件中的内容打印出来 返回值为文件内容的长度
1 | |
file_get_contents()读取文件内容 // 绝对路径 相对路径 网址路径
1 | |
fopen() 打开文件
fwrite() 写入
1 | |
fread() 读取文件
fgets() 读取一行
1 | |
文件模式
1 | |
文件包含
include函数和require函数
include(‘文件名’):
返回一个警告
如果引入出错,代码继续向下执行,通常用于动态包含
include(‘…’);
require(‘文件名’):
如果引入出错,代码就不会继续向下执行
require(‘include等文件包含函数.php’);
include_once函数引入 除了原有功能还会once检测,如果文件曾经已经被包含过,不再包含
推荐使用require
面向对象
具体资料https://www.runoob.com/php/php-oop.html
类
定义了一件事物的抽象特点。
类的定义包含了数据的形式以及对数据的操作。
1 | |
创建对象
类创建后,我们可以使用 new 运算符来实例化该类的对象
1 | |
调用成员方法
在实例化对象后,我们可以使用该对象调用成员方法,该对象的成员方法只能操作该对象的成员变量
$对象名->方法名(参数)
1 | |
类的方法和属性
如果想要调用或者对类的成员变量进行赋值需要用$this->变量名
1 | |
访问控制
PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
- public(公有):公有的类成员可以在任何地方被访问。
- protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
- private(私有):私有的类成员则只能被其定义所在的类访问。
魔术方法
构造函数和析构函数
__construct() 类构造函数
- 在创建一个新对象是,他会自动调用
- 他可以用来初始化对象的属性或执行的其他必要的操作
- 没有返回值
例如:
1 | |
__destruct() 类的析构函数 不能加上任何参数
1.在对象销毁时会自动调用
2.可以用来执行一些清理操作,例如释放资源或关闭数据库连接
3当对象不在被引用或脚本执行结束前,析构函数会被自动调用
其他魔术方法:
__call() 在对象中调用一个不可访问方法时调用
当调用一个不可访问方法或者不存在的方法时会执行__call()方法
__callstatic() 静态调用
调用时格式:对象名::方法名(参数)
__unset()方法和 unset函数 :当对不可访问属性调用unset()时被调用
可在对象外面删除对象的属性
例如:
1 | |
__tostring()方法 调用后可直接echo输出对象
例如:
1 | |
__set()方法 可给私有属性赋值
1 | |
__clone方法和clone关键字 用来复制对象产生一个副本
如果只需要直接复制就不需要再类中定义clone方法
如果在clone时需要重新赋初值
1 | |
__get()方法 可获取私有属性
1 | |
static静态变量和self
定义:public static $变量名
调用:self::变量名
1 | |
类常量
用const去定义常量,调用方式和static类似,用self调用,唯一区别是类常量不可修改
static静态方法定义:

调用静态方法:

类的继承
PHP中使用关键字extends来继承一个类,且PHP不支持多继承
1 | |
类的方法重写和属性改写
方法重写 (就是改写父类覆盖)
如果从父类继承的方法不能满足子类的需求,可以对其进行改写
这个过程叫方法的覆盖(override),也称为方法的重写。
直接在子类内部改写方法或属性。
final关键字(在不想被改写的类或类的方法前加final)
- 防止类被改写
- 防止类的方法被重写。
final不能用于属性
调用父类中被重写的方法
parent关键字
parent::方法();
网络请求
POST和GET
$_GET 变量:
预定义的 $_GET 变量用于收集来自 method=”get” 的表单中的值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送信息的量也有限制。
$_POST 变量:
预定义的 $_POST 变量用于收集来自 method=”post” 的表单中的值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
$SERVER[“PHP_SELF”] 变量
_$_SERVER[“PHP_SELF”]是超级全局变量,返回当前正在执行脚本的文件名,与 document root相关。
所以, $_SERVER[“PHP_SELF”] 会发送表单数据到当前页面,而不是跳转到不同的页面
$_REQUEST变量包含了$_GET,$__POST和$_COOKLE的内容
htmlspecialchars()方法
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。以避免在HTML文档中引起解析错误或安全漏洞
1 | |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。