PHP 学习准备
学习路线
1.熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉
2.理解动态语言的概念和运做机制,熟悉基本的PHP语法
3.学习如何将PHP与HTML结合起来,完成简单的动态页面
4.接触学习MySQL,开始设计数据库
5.不断巩固PHP语法,熟悉大部分的PHP常用函数,理解面向对象编程,MySQL优化,以及一些模板和框架
6.最终完成一个功能齐全的动态站点
开发工具
PHP服务器组件: WampServer,这也是目前window平台上使用最广泛的,操作也非常简单
PHP的IDE: Eclipse for PHP
MySql管理工具: Navicat for Mysql,Navicat for MySQL是一套专为MySQL设计的强大数据库管理及开发工具
文本编辑器: Notepad++
在线编辑器
PHP 简介
PHP(全称:PHP:Hypertext Preprocessor,即”PHP:超文本预处理器”)是一种通用开源脚本语言
PHP 脚本在服务器上执行
文件
PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码
PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器
PHP 文件的默认文件扩展名是 “.php”
作用
PHP 可以生成动态页面内容
PHP 可以创建、打开、读取、写入、关闭服务器上的文件
PHP 可以收集表单数据
PHP 可以发送和接收 cookies
PHP 可以添加、删除、修改您的数据库中的数据
PHP 可以限制用户访问您的网站上的一些页面
PHP 可以加密数据
优点
PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等)
PHP 与目前几乎所有的正在被使用的服务器相兼容(Apache、IIS 等)
PHP 提供了广泛的数据库支持
PHP 是免费的
PHP 易于学习
PHP 语法
PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器
基本的PHP语法
PHP 脚本以 <?php 开始,以 ?> 结束
PHP 文件的默认文件扩展名是 “.php”
PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码
PHP 中的每个代码行都必须以分号结束
输出文本的基础指令:echo 和 print
|
|
注释
|
|
PHP 变量
变量以$符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线
变量名不能包含空格
变量名是区分大小写的
|
|
声明PHP变量
PHP没有声明变量的命令
变量在您第一次赋值给它的时候被创建
|
|
弱类型语言
PHP会根据变量的值,自动把变量转换为正确的数据类型
在强类型的编程语言中,我们必须在使用变量前先声明变量的类型和名称
变量作用域
PHP有四种不同的变量作用域
- global
- local
- static
- parameter
global全局作用域
global关键字用于函数内访问全局变量
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上global关键字
|
|
PHP将所有全局变量存储在一个名为$GLOBALS[index]的数组中.index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量
|
|
local局部作用域
在PHP函数内部声明的变量是局部变量,仅能在函数内部访问
|
|
Static静态作用域
函数完成时,它的所有变量会被删除,要做到这一点,在第一次声明变量时,使用 static 关键字,即局部变量不会被删除
|
|
parameter参数作用域
参数是通过调用代码将值传递给函数的局部变量
参数是在参数列表中声明的,作为函数声明的一部分
|
|
PHPecho/print语句
- echo可以输出一个或多个字符串
- print只允许输出一个字符串,返回值总为1
echo语句
echo 命令输出字符串(字符串可以包含 HTML 标签)
|
|
echo 命令输出变量和字符串
|
|
pring语句
print 命令输出字符串(字符串可以包含 HTML 标签)
|
|
print 命令输出变量和字符串
|
|
PHP EOF(heredoc)
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法
注意
必须后接分号,否则编译通不过
EOF可以用任意其它字符代替,只需保证结束标识与开始标识一致
结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)
开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号
当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法
|
|
在 heredoc 中,变量不需要用连接符 . 或 , 来拼接
|
|
PHP 数据类型
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
PHP字符串
一个字符串是一串字符的序列,就像 “Hello world!”
|
|
PHP整型
整型是一个没有小数的数字
var_dump() 函数返回变量的数据类型和值
|
|
PHP浮点型
浮点数是带小数部分的数字,或是指数形式
|
|
PHP布尔型
布尔型可以是 TRUE 或 FALSE
|
|
PHP数组
数组可以在一个变量中存储多个值
|
|
PHP对象
对象数据类型也可以用于存储数据,在 PHP 中,对象必须声明
首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构
然后我们在类中定义数据类型,然后在实例化的类中使用数据类型
|
|
PHPNULL值
NULL值表示变量没有值,NULL是数据类型为NULL的值
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据
|
|
PHP常量
常量值被定义后,在脚本的其他任何地方都不能被改变
PHP常量
常量是一个简单值的标识符。该值在脚本中不能改变
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)
常量在整个脚本中都可以使用
设置PHP常量
设置常量,使用 define() 函数,该函数有三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的
|
|
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用
|
|
PHP字符串
字符串变量用于存储并处理文本
|
|
PHP并置运算符
在 PHP 中,只有一个字符串运算符,并置运算符 (.) 用于把两个字符串值连接起来
|
|
PHPstrlen()函数
strlen()函数返回字符串的长度
|
|
PHPstrpos()函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE
|
|
PHP运算符
PHP算术运算符
- x + y,x 和 y 的和
- x - y,x 和 y 的差
- x * y,x 和 y 的积
- x / y,x 和 y 的商
- x % y,x 除以 y 的余数
- (-x),x 取反
- a . b,连接两个字符串
|
|
PHP赋值运算符
- x = y,左操作数被设置为右侧表达式的值
- x += y,等同于x = x + y
- x -= y,等同于x = x - y
- x = y,等同于x = x y
- x /= y,等同于x = x / y
- x %= y,等同于x = x % y
- x .= y,等同于x = x . y
|
|
PHP递增/递减运算符
- ++ x,x 加 1,然后返回 x
- x ++,返回 x,然后 x 加 1
- (– x),x 减 1,然后返回 x
- x –,返回 x,然后 x 减 1
|
|
PHP 比较运算符
- x == y,如果 x 等于 y,则返回 true
- x === y,如果 x 等于 y,且它们类型相同,则返回 true
- x != y,如果 x 不等于 y,则返回 true
- x <> y,如果 x 不等于 y,则返回 true
- x !== y,如果 x 不等于 y,或它们类型不相同,则返回 true
- x > y ,如果 x 大于 y,则返回 true
- x < y,如果 x 小于 y,则返回 true
- x >= y,如果 x 大于或者等于 y,则返回 true
- x <= y,如果 x 小于或者等于 y,则返回 true
|
|
PHP逻辑运算符
- x and y,如果 x 和 y 都为 true,则返回 true
- x or y,如果 x 和 y 至少有一个为 true,则返回 true
- x xor y,如果 x 和 y 有且仅有一个为 true,则返回 true
- x && y,如果 x 和 y 都为 true,则返回 true
- x || y,如果 x 和 y 至少有一个为 true,则返回 true
- ! x,如果 x 不为 true,则返回 true
|
|
PHP数组运算符
- x + y,x 和 y 的集合
- x == y,如果 x 和 y 具有相同的键/值对,则返回 true
- x === y,如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
- x != y,如果 x 不等于 y,则返回 true
- x <> y,如果 x 不等于 y,则返回 true
- x !== y,如果 x 不等于 y,则返回 true
|
|
三元运算符
通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET[‘user’],否则返回 nobody
|
|
在 PHP7+ 版本多了一个 NULL 合并运算符 ??
|
|
组合比较符(PHP7+)
|
|
运算符优先级
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样
|
|
括号的使用
括号的配对来明确标明运算顺序,通常能够增加代码的可读性
|
|
PHP if…Else 语句
- if 语句 - 在条件成立时执行代码
- if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
- if…elseif….else 语句 - 在若干条件之一成立时执行一个代码块
PHP - if 语句
if 语句用于仅当指定条件成立时执行代码
|
|
PHP - if…else 语句
在条件成立时执行一块代码,条件不成立时执行另一块代码
|
|
PHP - if…elseif….else 语句
在若干条件之一成立时执行一个代码块,请使用 if….elseif…else 语句
|
|
PHP Switch 语句
switch 语句用于根据多个不同条件执行不同动作
|
|
PHP 数组
数组能够在单个变量中存储多个值
|
|
在 PHP 中创建数组
array() 函数用于创建数组
在 PHP 中,有三种类型的数组
- 数值数组 - 带有数字 ID 键的数组
- 关联数组 - 带有指定的键的数组,每个键关联一个值
- 多维数组 - 包含一个或多个数组的数组
PHP 数值数组
两种创建数值数组的方法
|
|
count()函数
count() 函数用于返回数组的长度
|
|
遍历数值数组
遍历并打印数值数组中的所有值,您可以使用 for 循环
|
|
PHP 关联数组
关联数组是使用您分配给数组的指定的键的数组
两种创建关联数组的方法
|
|
遍历关联数组
遍历并打印关联数组中的所有值,您可以使用 foreach 循环
|
|
PHP 数组排序
数组中的元素可以按字母或数字顺序进行降序或升序排列
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
sort() - 对数组进行升序排列
$cars 数组中的元素按照字母升序排列
|
|
$numbers 数组中的元素按照数字升序排列
|
|
rsort() - 对数组进行降序排列
$cars 数组中的元素按照字母降序排列
|
|
$numbers 数组中的元素按照数字降序排列
|
|
asort() - 根据数组的值,对数组进行升序排列
根据数组的值,对关联数组进行升序排列
|
|
ksort() - 根据数组的键,对数组进行升序排列
根据数组的键,对关联数组进行升序排列:
|
|
arsort() - 根据数组的值,对数组进行降序排列
根据数组的值,对关联数组进行降序排列
|
|
krsort() - 根据数组的键,对数组进行降序排列
根据数组的键,对关联数组进行降序排列
|
|
PHP 超级全局变量
PHP中预定义了几个超级全局变量,这意味着它们在一个脚本的全部作用域中都可用
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
PHP $GLOBALS
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键
|
|
PHP $_SERVER
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
|
|
PHP $_REQUEST
PHP $_REQUEST 用于收集HTML表单提交的数据
|
|
PHP $_POST
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”post”
|
|
PHP $_GET
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”get”
|
|
PHP While 循环
相同的代码块一次又一次地重复运行。我们可以在代码中使用循环语句
- while - 只要指定的条件成立,则循环执行代码块
- do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
while 循环
while 循环将重复执行代码块,直到指定的条件不成立
|
|
do…while 语句
do…while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环
|
|
PHP For 循环
- for - 循环执行代码块指定的次数
- foreach - 根据数组中每个元素来循环代码块
for 循环
for 循环用于您预先知道脚本需要运行的次数的情况
参数:
- 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
- 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
- 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)
|
|
foreach 循环
foreach 循环用于遍历数组
|
|
PHP 函数
PHP 的真正威力源自于它的函数
在 PHP 中,提供了超过 1000 个内建的函数
创建 PHP 函数
函数是通过调用函数来执行的
|
|
PHP 函数 - 添加参数
参数就在函数名称后面有一个括号内指定
|
|
函数有两个参数
|
|
PHP 函数 - 返回值
如需让函数返回一个值,请使用 return 语句
|
|
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量
有八个魔术常量它们的值随着它们在代码中的位置改变而改变
LINE
文件中的当前行号
|
|
FILE
文件的完整路径和文件名
|
|
DIR
文件所在的目录,等价于 dirname(FILE)
|
|
FUNCTION
函数名称
|
|
CLASS
类的名称
|
|
TRAIT
Trait 的名字,自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits
Trait 名包括其被声明的作用区域(例如 Foo\Bar)
|
|
METHOD
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)
|
|
NAMESPACE
当前命名空间的名称(区分大小写)
|
|
PHP 命名空间
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性
定义命名空间
命名空间通过关键字namespace 来声明
如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间
|
|
同一个文件中定义不同的命名空间代码(不推荐)
|
|
建议使用下面的大括号形式的语法
|
|
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法
全局代码必须用一个不带名称的 namespace 语句加上大括号括起来
|
|
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句
|
|
以下代码会出现语法错误
|
|
子命名空间
与目录和文件的关系很像,PHP 命名空间也允许指定层次化的命名空间的名称
|
|
命名空间使用
PHP 命名空间中的类名可以通过三种方式引用
- 非限定名称,或不包含前缀的类名称
例如 $a=new foo(); 或 foo::staticmethod()
如果当前命名空间是 currentnamespace,foo 将被解析为 currentnamespace\foo
如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo
- 限定名称,或包含前缀的名称
例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod()
如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo
如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo
- 完全限定名称,或包含了全局前缀操作符的名称
$a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod()
在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo
实例一
|
|
实例二
|
|
实例三
|
|