Web 后端php
Web 后端php
PHP基本语法
PHP(HyperText Preprocessor):超文本预处理器
官方网站: https://www.php.net/
- PHP 代码必须包含在 <?php ... ?>标签中
这是服务器识别 PHP 代码的标识 - 语句结束:每条语句以 ;(分号)结束
- 注释 //单行注释 /多行注释/
- 变量规则:所有变量都必须以$符号开头
1. 输出
<?php // 这是输出helloworld echo "helloworld"; // echo 打印,输出 ?> 输出:helloworld 写程序的时候需养成注释代码的好习惯,以免日后忘记,导致从头开始理解代码
2. 定义变量和拼接字符串
<?php // 定义变量 $message ="你好,大家好"; $name="张三"; // . 表示拼接 echo $message."我是".$name; ?> 输出:你好,大家好我是张三 简单来说,把变量比作一个盒子,变量名可以自定义,就像你可以拿不同材质、大小的盒子一样
定义一个变量,就像你网购一个快递,不管是什么样的盒子(你所定义的变量名),里面都是你所下单的东西(即你所定义的值)
变量可以反复使用,并且修改变量中包含的值,所有代码中的变量都会改变,节省修改代码时间
变量名可以自定义,但最好还是做到“见词生意”,看见变量名就能大概理解变量所代表的值
普通变量:保存单个数据,变量名可自定义
PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)

HTML 和 PHP 可以混合输出
3. 数组
创建数组:
- [ ]
array() 函数用于创建数组----php版本5.4+

<?php // 定义数组:可以保存多个值 $student = ["xiaoming", "xiaolin", "xixi", "xiaoai"]; //利用索引获取数组里数据 echo $student[0]; //0 代表数组第一个值 ?> 输出:xiaoming 数组:保存多个数据,可以用[ ]
组:用来存储一组类同数据(如:都表示姓名)
4. php流程控制–条件语句
PHP流程控制语句用于决定代码的执行顺序
条件语句:根据不同情况执行不同代码

if语句
表示判断,如果成立则执行,不成立则不执行
<?php $score = 75; if ($score >= 60) { echo "成绩及格"; } ?> 输出:成绩及格 #小于60则不会执行代码 if…else语句
判断两个条件并执行其中一个
if…elseif…else 语句
判断多个条件,选择所触发条件的代码执行
<?php $score = 85; if ($score >= 90) { echo "成绩优秀"; } elseif ($score >= 80) { echo "成绩优良"; //85 >=80 成立 } elseif ($score >=60) { echo "成绩及格"; }else { echo "成绩不及格"; } ?> 输出:成绩优良 #根据所输入的数据判断哪条条件满足执行 if语句:表示判断,可判断一次,两次,也可判断多次
if语句执行:当满足条件时则会执行,否则不执行
5. 流程控制–循环语句
PHP流程控制语句用于决定代码的执行顺序。
循环语句:重复执行某个任务
for循环:

如:打印全班同学的名字
<?php //索引'xiaoming'=0, 'xiaolin'=1, 'xixi'=2, 'xiaogao'=3 $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; //$i=0 初始化; $<=3 循环条件; $i=$i+1 迭代 for ($i = 0; $i <= 3 ; $i=$i+1) { echo $student[$i].' ' ; //这里输出空格是为了美观 } ?> 输出:xiaoming xiaolin xixi xiaogao for循环:当条件满足时,会重复执行某部分代码
注意:条件一直满足(死循环),会一直重复循环,电脑容易卡死
while循环:

<?php $count = 3; $student = ['xiaoming', 'xiaolin', 'xixi', 'xiaogao']; // ($count >= 0) 循环条件 while ($count >= 0) { echo $student[$count].' ' ; $count=$count-1; //迭代,递减操作,确保循环能终止 } ?> 输出:xiaogao xixi xiaolin xiaoming while循环:当条件满足时,会重复执行某部分代码
习惯:知道次数通常用for,不知道次数通常用while
6. 类与函数
类:
在PHP中,使用class关键字来定义一个类
class表示类,可以通过属性表示多个不同类型的数据
<?php header("Content-Type: text/html; charset=utf-8"); // 定义一个类;student(类名,可自定义) class student{ // 定义属性;public 表示公共的,公开的 public $name; public $age; } // 类的使用:new一个对象 $stu1 = new student(); // 通过new的对象去使用该类中的属性并赋值(name = "xiaoming") $stu1 -> name = "xiaoming"; $stu1 -> age =18; // $stu1->name 表示使用$stu1对象中的name属性(此时变量$stu1中的属性name="xiaoming") echo $stu1->name; echo $stu1->age; ?> 输出:xiaoming18 函数:
<?php header("Content-Type: text/html; charset=utf-8"); // 定义一个类;student(类名,可自定义) class student{ // 定义属性(变量);public 表示公共的,公开的 public $name; public $age; // function 表示自定义函数;say 函数名(可自定义) public function say() { //自定义函数 echo $this->name. " 你好!"; } } // 类的使用:new一个对象 $stu1 = new student(); $stu1 -> name = "xiaoming"; #代码从上往下执行,先给name赋值xiaoming $stu1 -> age =18; $stu1->say(); #然后再调用函数 ?> 输出:xiaoming 你好! 类可以包含属性(变量)和方法(函数)
属性用于存储数据,而方法用于执行操作
new关键字直接跟类名来创建对象
| 理解 | 关键字 |
|---|---|
| 类 | class |
| 对象 | new |
| 函数 | function |
- 类是模板/蓝图,定义属性和方法的抽象规则;对象是类的实例,是根据模板创建的具体实体,拥有类的属性和方法。
简单说:类造对象,对象用类的功能
- 一个类可创建多个不同对象,各对象属性值独立,方法共用。
- 对象通过 -> 访问属性/方法,类通过 :: 访问静态成员。
- 类是抽象的,不能直接使用;对象是具体的,可直接操作。
魔术方法·:
魔术方法不需要显式调用,而是由PHP解释器在特定时机自动触发。
通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct()
<?php // 定义一个人类 class Person { //通常用两个下划线(__)开头,后跟方法名称,如构造方法 __construct() public function __construct() { echo "construct is coming ~"; } } // 通过某个机制触发,new的时候触发构造方法(满足条件,自动执行) $p1 = new Person(); ?> 输出:construct is coming ~ 函数:
- 普通函数:独立于类之外,直接定义、直接调用,无归属
- 类的函数:定义在类内部,是类的行为属性,需通过对象(非静态方法)或类名(静态方法)调用
- PHP 内置函数:PHP 自带的全局函数(“__”开头),无需定义直接触发机制调用,覆盖绝大多数常用功能,是开发中最常使用的函数类型
7. 超全局变量
PHP 的强⼤在于它能轻松处理⽤⼾通过 Web 提交的数据,这依赖于⼏个特殊的超全局变量,它们是 PHP ⾃动创建的数组
HP提供了预定义的超全局变量,用来获取HTTP请求信息

案例:

页面代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="test10.php" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="number" name="age"><br> <button type="submit">提交</button> </form> </body> </html> 和接收代码
<?php header("Content-Type: text/html; charset=utf-8"); $name = $_GET['name'] ; $age = $_GET['age'] ; echo "<h3>接收到的参数:</h3>"; echo "姓名:{$name}<br>"; echo "年龄:{$age}<br>"; echo "<a href='a.php'>返回填写表单</a>"; ?> 效果:


序列化与反序列化
传递多个数据可以用序列化对象
序列化 是将⼀个 PHP 对象(包括它的类名、所有属性和属性值)转换为⼀个可存储、可传输的字符串的过程。
同样创建一张测试页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="test10.php" method="get"> 姓名:<input type="text" name="name"><br> 年龄:<input type="number" name="age"><br> 密码:<input type="password" name="pwd"><br> <button type="submit">提交</button> </form> </body> </html> 和一张接收页面
<?php header("Content-Type: text/html; charset=utf-8"); // 用来测试,看是否能获取 $name = $_GET['name'] ; $age = $_GET['age'] ; $pwd = $_GET['pwd'] ; echo "<h3>接收到的参数:</h3>"; echo "姓名:{$name}<br>"; echo "年龄:{$age}<br>"; echo "密码:{$pwd}<br>"; // 把多个数据打包到一个类中来 class student{ public $name; public $age; public $pwd; } $stu1 = new student(); $stu1 -> name = $name; $stu1 -> age = $age; $stu1 -> pwd = $pwd; echo "<h3>序列化后的数据:</h3>"; // serialize:序列化:把对象转换为字符串 $serialized = serialize($stu1); echo $serialized; echo "<h3>反序列化后的数据:</h3>"; // unserialize:反序列化:把字符串转换为对象 $restored = unserialize($serialized); //序列化以后的值 echo $restored->name ; echo "<br>"; echo $restored->age ; echo "<br>"; echo $restored->pwd ; echo "<br>"; echo "<a href='a.php'>返回填写表单</a>"; ?> 效果:

