后端基础【PHP速通】
后端基础【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 |
|
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print。
PHP 注释
- // 单行注释
- /* */ 多行注释
1 |
|
变量
变量是用于存储信息的”容器”
1 |
|
PHP 变量规则
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
创建PHP变量
PHP 没有声明变量的命令。
变量在您第一次赋值给它的时候被创建
1 |
|
在上面的语句执行中,变量 txt 将保存值 **Hello world!**,且变量 x 将保存值 5。
注释: 当您赋一个文本值给变量时,请在文本值两侧加上引号。
PHP 是一门弱类型语言
PHP 会根据变量的值,自动把变量转换为正确的数据类型。
在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
echo 和 print 语句
echo 和 print 区别:
- echo - 可以输出一个或多个字符串
- print - 只允许输出一个字符串,返回值总为 1
提示: echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
显示字符串
1 |
|
显示变量
1 |
|
print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
显示字符串
1 |
|
显示变量
1 |
|
数据类型
PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。
PHP 支持以下几种数据类型:
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- (空值)
- Resource(资源类型)
字符串
一个字符串是一串字符的序列,就像 “Hello world!”。
你可以将任何文本放在单引号和双引号中
1 |
|
整型
整数是一个没有小数的数字。
整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
PHP var_dump()函数用于输出一个或多个表达式的类型和值,它通常用于调试目的,因为它可以快速显示变量的详细信息。
1 |
|
浮点型
浮点数是带小数部分的数字,或是指数形式
1 |
|
布尔型
布尔型可以是 TRUE 或 FALSE
布尔型通常用于条件判断
数组
数组可以在一个变量中存储多个值
1 |
|
对象
对象数据类型也可以用于存储数据。
在 PHP 中,对象必须声明。
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型
1 |
|
值
值表示变量没有值。 是数据类型为 的值。
值指明一个变量是否为空值。 同样可用于数据空值和 值的区别。
可以通过设置变量值为 来清空变量数据
1 |
|
类型比较
虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。
- 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
- 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
例如,”42” 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。
1 |
|
PHP中 比较 0、false、
1 |
|
常量
常量值被定义后,在脚本的其他任何地方都不能被改变
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数,函数语法如下
1 | bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) |
该函数有三个参数:
- name: 必选参数,常量名称,即标志符。
- value: 必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
创建一个 区分大小写的常量, 常量值为 “欢迎访问 xbxaq.com”
1 |
|
运算符
PHP 中,赋值运算符 = 用于给变量赋值。
在 PHP 中,算术运算符 + 用于把值加在一起。
算术运算符
1 |
|
赋值运算符
1 |
|
递增/递减运算符
1 |
|
比较运算符
1 |
|
三元运算符
语法格式
1 | (expr1) ? (expr2) : (expr3) |
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
条件语句
您编写代码时,您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。
在 PHP 中,提供了下列条件语句:
- if 语句 - 在条件成立时执行代码
- if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if…elseif….else 语句 - 在若干条件之一成立时执行一个代码块
- switch 语句 - 在若干条件之一成立时执行一个代码块
if 语句用于仅当指定条件成立时执行代码
语法
1 | if (条件) |
1 |
|
if…else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码,请使用 if….else 语句。
语法
1 | if (条件) |
1 |
|
if…elseif….else 语句
在若干条件之一成立时执行一个代码块,请使用 if….elseif…else 语句。.
语法
1 | if (条件) |
1 |
|
Switch 语句
switch 语句用于根据多个不同条件执行不同动作。
如果您希望有选择地执行若干代码块之一,请使用 switch 语句。
1 |
|
数组
数组能够在单个变量中存储多个值
数组可以在单个变量中存储多个值,并且您可以根据键访问其中的值。
1 |
|
创建数组
在 PHP 中,array() 函数用于创建数组:
1 | array(); |
在 PHP 中,有三种类型的数组:
- 数值数组 - 带有数字 ID 键的数组
- 关联数组 - 带有指定的键的数组,每个键关联一个值
- 多维数组 - 包含一个或多个数组的数组
数值数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
1 | $cars=array("Volvo","BMW","Toyota"); |
1 |
|
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量)
1 |
|
遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环
1 |
|
关联数组
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法
1 | $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); |
1 |
|
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环
1 |
|
循环
循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块。
在 PHP 中,提供了下列循环语句:
- while - 只要指定的条件成立,则循环执行代码块
- do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
- for - 循环执行代码块指定的次数
- foreach - 根据数组中每个元素来循环代码块
while循环
while 循环将重复执行代码块,直到指定的条件不成立。
语法
1 | while (条件) |
实例首先设置变量 i 的值为 1 ($i=1;)。
然后,只要 i 小于或者等于 5,while 循环将继续运行。循环每运行一次,i 就会递增 1:
1 | <html> |
do…while 语句
do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环。
语法
1 | do |
实例首先设置变量 i 的值为 1 ($i=1;)。
然后,开始 do…while 循环。循环将变量 i 的值递增 1,然后输出。先检查条件(i 小于或者等于 5),只要 i 小于或者等于 5,循环将继续运行
1 | <html> |
For 循环
for 循环用于您预先知道脚本需要运行的次数的情况。
语法
1 | for (初始值; 条件; 增量) |
参数:
- 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
- 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
- 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
注释: 上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
实例
下面的实例定义一个初始值为 i=1 的循环。只要变量 i 小于或者等于 5,循环将继续运行。循环每运行一次,变量 i 就会递增 1
1 |
|
foreach 循环
foreach 循环用于遍历数组。
语法
1 | foreach ($array as $value) |
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
1 | foreach ($array as $key => $value) |
每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。
1 |
|
1 |
|
函数
创建 PHP 函数
函数是通过调用函数来执行的。
1 |
|
函数准则:
- 函数的名称应该提示出它的功能
- 函数名称以字母或下划线开头(不能以数字开头)
1 |
|
函数 - 添加参数
为了给函数添加更多的功能,我们可以添加参数,参数类似变量。
参数就在函数名称后面的一个括号内指定。
1 |
|
1 |
|
函数 - 返回值
如需让函数返回一个值,请使用 return 语句
1 |
|
超局变量
超全局变量是在全部作用域中始终可用的内置变量。在函数或方法中无需执行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():调用一个不可访问的类方法;