第3章 PHP基础
3.1 PHP的工作原理
3.2 PHP的版本变迁
3.3 PHP特性
完全免费开源,升级快,很多成熟的框架支持
支持模块化开发,实现程序逻辑与用户界面的完全分类
便捷性,开发快,硬性快,易学习
良好的跨平台性
同目前主流技术兼容
简单的语言
支持所有主流与非主流数据库
面向对象
编辑简单,实用性强
3.4 PHP应用范围
3.5 PHP基本语法
标记
<?php ...?>
<? ...?>
<% ...%>
<script laguage="php">...</script>
注释
// 注释内容 # C++风格单行注释
# 注释内容 # Shell风格单行注释
/ *
* 注释内容
* /
3.6 PHP中的变量与常量
变量
声明 $a
赋值 $a=1;
可变变量 B赋值给A,可通过B得到A变量的值
变量作用域
局部变量
函数参数
全局变量 GLOBAL
静态变量 static
超级全局变量:预定义变量
$GLOBALS
$_SERVER
$_GET|$_POST
$_SESSION|$_COOKIE
$_REQUEST
常量:在程序执行中无法修改的值
自定义常量
查看常量是否被定义
boolean define(starting name,mixed value[,bool case_insensitive])
# 定义常量不用$开头
魔术常量
根据位置而改变的常量
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__
3.7 表达式
分类
单目表达式:$a
双目表达式:$a+$b
三目表达式:$a?$b:$c
操作符(从上到下优先级降低)
非结合 new # new
从左向有 [ # array
非结合 ++ -- # 递增递减
非结合 !·-(int)(float)(string)(array)(object) # 类型
从左到右 * / % #算数运算符
从左到右 +-. #算数运算符和字符运算符
从左到右 << >> #位运算符
非结合 < <= > >= #比较运算符
非结合 == != === !== #比较运算符
从左到右 & #位运算符和引用
从左到右 ^ #位运算符
从左到右 | #位运算符
从左到右 && #逻辑运算符
从左到右 || #逻辑运算符
从左到右 ?: #三元运算符
从右到左 = += -= *= /= %= |= &= ^= <<= >>= #赋值运算符
从左到右 And #逻辑运算符
从左到右 Xor& #逻辑运算符
从左到右 Or #逻辑运算符
3.8 PHP中的数据类型
基本数据类型:整型、浮点型、布尔型、字符串
复合数据类型:数组、对象
特殊数据类型:null和资源
3.9 强制类型转换
显式和隐式强制转换
隐式:PHP语言引擎自动解析的转换方式。如一个字符串和一个整型相加,会将字符串转换成整型
显式:(int)|(float)|(string)|(bool)|(array)|(object)
有用的强制类型转换函数
is_type()/gettype/settype
3.10 PHP语句 顺序结构|分支结构|循环结构
循环语句
while语句
while(){
}
do while语句
do{
}while()
for(;;){
}
条件判断语句
if(){}elseif(){}else{}
switch($temp){case 'value':执行;break;...;default:执行}
第4章 字符串和正则表达式
4.1 什么是字符串
4.2 定义字符串
'' "" 标识符(定界符)
4.3 获取字符串
substr($string,$start[,$length])
4.4 拼接字符串
. .=
4.5 字符串格式化
printf($format[,$arg1][,$arg2])
sprintf($format[,$arg1][,$arg2])
nl2br($string):将字符串中的\n解释为html中的br
wordwrap($str[,$width[,$break[,$cut]]]):让字符串在指定的位置上强制换行
4.6 修改字符大小写
strtolower($str):转小写;
strtoupper($str):转大写;
ucwords($str):首字母转大写;
4.7 计算字符串长度和字符数目
strlen($str):字符串长度;
substr_count($str,$needle[,$offset[,$length]]):计算某字符串在另一字符串中出现的次数
$needle:要查询的字符串,$offset:搜索位置(默认0)
str_word_count($str[,$format[,$charlist]]):将字符串按单词拆分,只有第一个参数时返回单词数量,有多个参数时返回拆分的数组
4.8 字符串查找函数
strstr($str,$needle):查找字符串
strpos($str,$needle[,$offset]):搜索字符串位置
4.9 字符串的复制和替换
str_repeat($str,$num):复制
str_replace($str,$replace,$start[,$length]):替换
4.10 字符串比较
strcmp(),strcasecmp(),strnatcmp()
4.11 正则表达式的概念和语法
基本模式匹配
^ $ \
字符集
[a-z]
[A-Z]
[a-zA-Z]
[0-9]
[0-9\.\-]
[\f\r\t\n]
[[:alpha:]] # 字母
[[:digit:]]
[[:alnum:]] # 字母和数字
[[:space:]] # 白字符
[[:upper:]]
[[:lower:]]
[[:punct:]] # 标点符号
[[:xdigit:]] # 16进制数字
com|org|cn #或
重复
{n,n1}:某规则重复n到n1之间的次数(包括两者)
? :0个或1个前面的内容
* :0个或多个前面的内容
+ :1个或多个前面的内容
使用正则表达式查找子字符串:ereg(),eregi()
ereg($rule,$str[,$regs]):结果放在$regs中
用正则分隔字符串split(),explode()
split($rule,$str[,$limit]):以$rule规则分割$str,最多分割$limit个子字符串
explode($str,$rule[,$limit]):
第5章 数组
5.1 数组基本概念
操作符:[] + == === != !== <>
5.2 数字索引数组
初始化:$arr=array('val1','val2');
range($start,$end,$step);
访问数组:$arr[0]
循环访问数组
5.3 数组的创建和添加
创建
$arr=array('val1','val2');
$arr=array(1=>'val1','jds'=>'val2');
添加数组
$arr[]='val';
5.4 数组元素的添加和删除
array_unshift:数组头部添加元素
array_push:数组尾部添加元素
array_shift:数组头部删除元素
array_pop:数组尾部添加元素
5.5 数组遍历
for ;foreach ;list each;
5.6 字符串与数组之间转换
explode():字符串转数组
implode():数组转字符串
5.7 多维数组
5.8 数组排序
sort:低到高 rsort:高到低 # 键值对应关系会变,对值排序
asort:低到高 arsort:高到低 # 键值对应关系不变,对值排序
ksort:低到高 krsort:高到低 # 键值对应关系不变,对键排序
shuffle():随机排序,键值重新初始化
array_multisort():多维数组排序
5.9 数组判断函数
in_array()
array_key_exists()
5.10 数组合并和拆分
合并:
array_merge():第一个数组与第二个数组追加成一个数组
array_combine():第一个数组的值作为键,第二个数组的值作为值生成新的数组
拆分:array_chunk()
数组交集:array_intersect()
数组变成标量:extract()
5.11 快速初始化数组
range()
array_fill()
5.12 数组中查找值
array_search();
5.13 定位数组位置
in_array():判断是否在数组中
array_search():搜索给定的值,返回相应键名
array_keys():获取数组所有的键名
array_values():获取数组所有的值
第6章 PHP对文件的操作
6.1 打开/关闭文件
打开:$file=foppen("path",'r');
# r代表只读
# w代表写入
# a代表指向文件末尾,以写打开
# r+指针在头,读写打开
# x代表目标文件存在警告,不存在新建
关闭:fclose($file);
6.2 读取文件
fread()和file()
fpassthru():通过打开的文件指针作为参数,将文件信息标准输出到浏览器中,并在输出后关闭
fgets()和fgetss():读取一行
fgetcsv():根据定界符来分开文件中的文字信息
6.3 写入文件
fwrite()
6.4 方便的处理文件
file_get_contents()和file_put_contents()
6.5 其他文件处理函数
copy($source,$dest);//将文件source复制给dest
dirname(path);//返回文件所在路径
feof();//指针是否指向文件尾
file_exists($filename);//文件是否存在
file_size($filename);//文件大小
6.6 移动指针小案例
ftell():查看指针位置
6.7 文件锁定
flock($file,LOCK_SH):读操作锁定
flock($file,LOCK_EX):写操作锁定
flock($file,LOCK_NU):释放已有锁定
flock($file,LOCK_NB):防止加锁阻塞
flock($file,LOCK_UN):解锁
第7章 php函数与代码的重用性
7.1 定义和调用函数
7.2 参数
形参:定义函数时的参数;实参:调用函数时传递的参数
func_num_args():返回参数总数
func_get_args():返回参数具体信息
按值传递、引用传递、默认参数值
7.3 函数内的变量范围
随着声明位置的不同而有不同的作用范围
局部变量:函数内部声明
静态变量:static #内存地址不变也不会消失
全局变量:global|$GLOBAL['key']
7.4 函数的作用域和可用性
7.5 用变量存储函数的名称
PHP会自动解析变量的值是否为一个函数名
7.6 递归函数:函数内部直接或间接调用自己本身的语句
其实是耗内存的
7.7 使用和包含文件
include() include_once()找不到输出警告继续执行脚本 带once的仅引入一次
require() require_once()找不到输出致命错误终止脚本 带once的仅引入一次
第8章 面向对象的程序设计
8.1 类和对象的关键概念
类:具有相同特性的对象的集合。在oop术语中,实体的兴致和行为的具体定义成为类
声明:class 类名{var $temp;function 方法名(){}}
对象:在类的基础上创建实体的特定实例
创建对象的过程成为实例化 new关键字
特性:
对象的句柄:用于区分不同的对象
对象的属性:用于描述对象的静态特性(属性)
对象的方法:用于描述对象的动态特性(方法)
用操作符'->'来调用成员属性和方法
类成员的访问控制:public private protected
字段:也称类的属性(成员变量)
可用$this访问
属性:也称类的成员变量,用来保存信息数据
常量:const关键字,存储于对象直接相关的信息,公开可用,不能用$this调用
方法:函数时独立的实现某一功能,成员方法是类的一部分
$this关键字:只能在类内部使用,指向$this所在类的本身
面向对象编程的特性:封装,继承,多态
8.2 构造方法和析构方法:对象创建和销毁过程中自动执行
__construct()
__destruct()
8.3 静态类成员
静态属性
静态方法
调用操作符::
8.4 对象克隆
clone 对象名
__clone()方法:克隆的操作期间执行
8.5 继承
class child extends parent{}
使用parent::父类方法调用父类的方法
instanceof 关键字检测当前对象是否属于某一个类
覆盖父类的方法:与父类起同名的方法或属性
8.6 多态
通过继承实现多态
通过接口实现多态
interface 接口名 #方法都没有函数体
通过class child implements parent{}来实现,其中的方法存在函数体
8.7 抽象类和接口
抽象类
抽象类中至少包含一个关键字abstract修饰的抽象方法
抽象方法的不实现具体功能的空方法,只能由子类去继承
所有方法由子类去实现
abstract class 抽象类名称{
abstract function 成员方法1(参数1,参数2..);
function 成员方法1(参数1,参数2..);
}
接口:成员方法声明的集合
使用类实现接口时,必需包含接口中的所有方法
interface 接口名称{
function 成员方法1(参数1,参数2..);
function 成员方法1(参数1,参数2..);
}
接口与抽象类的区别
接口没有数据成员,抽象类有数据成员可实现数据封装
接口中没有构造和析构函数,抽象类可以有
接口中的方法都是public类型
一个类可同时继承多个接口,只能继承一个抽象类
接口中不能有实现的方法,自定义的方法只能在继承该接口的类中实现