-
一,PHP基础
-
注释
- 多行/*..............*/
- 单行//或#
-
表单变量<form aciton
- $_GET[name]
- $_POST[name]
- $_REQUEST
-
PHP数据类型
- 整数
- 浮点数
- 字符串
- 布尔值
- 数组
- 对象
- 标量
-
常识
- 字符串的连接
-
变量命名规则
- 长度不限
- 不能以数字开头,区分大小写
- 不用声明可以直接使用
- 类型转换
- 可变变量
- 常量
-
理解变量作用域
- 内置超级全局变量可在脚本所有地方使用
- 常量一旦声明全局可见,函数内外可用
- 在一个脚本声明的全局变量在整个脚本中可见
- 函数内部使用的变量为全局时,名称要与全局变量名称一致
- 函数内部创建的静态的变量无法在函数外可见
- 函数内创建变量是函数内部的,函数终止时变量就不存在了
-
转义字符
- \n换行\r回车
-
操作符
-
算术操作符
- 加+
- -减
- *乘
- /除
- %取余
- 字符串操作符.
-
赋值操作符=
- 赋值运算返回值
-
复合赋值操作符
- $a += $b
- $a -= $b
- $a *= $b
- $a /= $b
- $a % $b
- $a . $b
- 前置后置递增递减运算符
- 引用操作符
-
比较操作符
- 等于操作符
- 其他比较操作符
-
逻辑操作符
- 且
- 或
- 非
- 异或
-
位操作符
- &且
- |或
- ~非
- ^异或
- <<左位移
- >>右位移
-
其他操作符
- ,逗号
- new
- ->
- 三元操作符
- 错误抑制操作符@
- 执行操作符
-
数组操作符
- 联合+
- 等价==
- 恒等===
- 非等价!=
- 非恒等!==
- 返回true或是false
- 类型操作符instanceof
-
了解函数
- number_format($a,2)
-
使用可变函数
-
测试设置变量类型
- gettype($a)
- settype($a,设置类型)
-
测试变量类型函数
- is_array()
- is_double()
- is_int()
- is_string()
- is_bool()
- is_Object()
- is_resource()
- is_null()
- is_scalar()
- is_numeric()
- is_callable()
-
测试变量状态
- isset($a)
- unset($a)
- empty()
-
条件语句
- if语句
- else语句
- elseif语句
- switch语句
-
循环语句
- while循环未知次数
- do{....}while()循环
- for循环固定次数
- foreach数组循环
-
从脚本中跳出
- break
- continue
- exit
-
文件读写储存
-
文件处理
- fopen('文件名','模式')
- fwrite(文件,'内容')
- strlen(文件)
- fclose(文件)
- feof(文件)
-
读取一行数据
- fgets(文件,读取最大长度)
- fgetss(文件,读取长度,要过滤的字符)
- fgetcsv(文件,长度,定界符)
-
读取整个文件
- readfile(文件)
- fpassthru(文件)
- file()
- 读取一个字符fgetc()
- fread()读取任意长度
-
其他文件函数
- file_exists(文件)
- filesize()
- unlink()
-
文件指针定位
- rewind()
- fseek($fp,B,A)
- ftell()
- 文件锁定flock()
-
推荐使用数据库读取操作
-
使用普通文件的问题
- 文件变大访问非常慢
- 查找特定一组比较困难
- 处理并发访问有问题
- 从文件中间插入删除困难
- 文件访问权限单一,需要多级别会员
-
RDBMS
- 访问速度块
- 容易查找检索特定条件
- 具有内置的处理并发访问的机制
- 可以随机访问数据
- 具有内置的权限系统
- php的SQLite扩展
-
数组
-
数组
- 数字索引数组
- 非数字索引数组
-
多维数组
-
二维数组
- 数字可以用双重for循环
- 二维关联还可以用for循环加$[i][key]
- 可以用for[$i]然后用list($k,$v)=each($a[$i])循环
-
三维数组
- 可以先用两个for循环
- 如果里面数组是数字索引
- 如果里面数组为关联索引
-
数组操作符
- $a+$b
- $a==$b
- $a===$b
- $a!=$b
- $a!==$b
-
数组排序
-
排序
- sort()
- asort()
- ksort()
-
反向排序
- rsort()
- arsort()
- krsort()
- range()
-
多维数组的排序
- usort(数组,'比较函数')
- uasort(数组,'比较函数')
- uksort(数组,'比较函数')
- 反向排序没有对应的rsort版本
- shuffle()
- array_reverse()
-
数组指针
- reset()
-
数组函数
- array_push()
- array_pop()
- file($a)
- count($a)
- explode(定界符,字符串)
- intval()
- array_walk($a,函数)
- sizeof()
- array_count_values()
-
extract(数组,冲突咋办)
- EXTR_OVERWRITE
- EXTR_PREFIX_ALL
- 还有其他参数,上面最常用
-
循环访问数组
- for循环
- foreach
- each()
- list($key,$value)
-
关于指针
- each()
- next()
- current()
- reset()
- end()
- pos()
- prev()
-
字符串操作与正则表达式
-
字符串
-
其他
- isset()
- empty()
-
格式化
- trim(字符传,diy过滤符号)
- ltrim()
- rtrim()
- nl2br($a)
- print()输出
- printf()
- sprintf()
-
改变字母大小写
- strtoupper()
- strtolower()
- ucfirst()
- ucwords()
-
格式化字符串准备存储MYSQL
- addslashes()
- stripslashes()
- get_magic_quotes_gpc()
-
连接与分割
- explode(定界符,字符串)
- implode(定界符,数组)
- join()
- strtok()
- substr($str,开始,截止位置)
-
字符串比较
-
排序
- strcmp($str1,$str2)
- strcasecmp()
- strnatcmp()
- strnatcasecmp()
- strlen()
-
匹配替换string
-
查找字符串
- strstr(字符串,搜的关键字)
- stristr()
- strchr(str,keywords)
- strrchr()
-
查找字符串的位置
- strpos(字符串,关键字)
- strrpos
- 有点问题
-
替换字符串
- str_replace(a,abcd,$str)
- substr_replace($str,"X",-1)
-
正则表达式
- [a-zA-Z0-9]
- .at
- [^abcd]
- *有没有a都行
- +至少有一个a
- 上面可以组合应用括号括起来()
- {1,3}最少重复1次最多3次
-
匹配开头结尾
- 开头^b
- 结尾$,例如com$
- com|edu|net或or
- 匹配特殊符号用转义符\
- 正则符号一览表
-
用正则查找字符串
- ereg(表达式,字符串,保存的数组)
- eregi()
-
用正则替换字符串
- ereg_replace(表达式,XXX,字符串)
- eregi_replace()
-
用正则分割字符串
- split(正则,字符串,最大个数)
-
代码重用与函数编写
-
代码重用的好处
- 成本小
- 可靠性
- 一致性
-
使用require()和include()函数
- require()
- require_once()
- include()
- include_once()
-
配置文件php.ini
- auto_prepend_file
- auto_append_file
- apache服务器对某个目录每个文件的引入
-
函数介绍
- 调用函数
- 调用未定义函数
- 函数名称
- 定义函数
-
使用参数
-
帮助器函数
- func_num_args()
- func_get_arg(0)
- func_get_args()
-
理解作用域
- 函数内部声明变量
- 函数外部声明变量
- 特殊超全局变量$_GET之类
- require和include引入的变量
- global 指定函数内全局作用域
- unset(变量)
- 参数引用变量用符号&
-
返回值
- return在函数内停止执行函数
- return 值
- 注意false和0的问题
- 实现递归
- 使用命名空间
-
面向对象
- 面向对象的概念
-
类,属性,和操作方法
-
类
- 构造函数__construct()
- 析构函数__destruct()
-
属性
- 特殊指针$this->
- 在类外访问属性方法
-
不推荐类外访问属性方法
- __get(属性)
- __set(属性,属性值)
- 子主题 4
- 子主题 3
- 类属性
- 类方法的调用
-
继承
- 单项继承的
- 与访问修饰符有关
- 重载
- parent::属性或是方法
- final禁止继承和重载本类属性方法
- 理解多重继承C++类型
- 实现接口解决不能多重继承
-
访问修饰符
- public
- private
- protected
- 类的设计
-
高级面向对象功能
-
不用实例化调用属性方法
- 使用per-class常量
- 静态方法static
-
类型提示instanceof
- {$b instanceof B}
- 延迟静态绑定(>php5.3版本)
-
对象克隆clone及__clone
- clone
- __clone()方法写在父类中
- 抽象类
- 使用__call()重载方法
- 使用__autoload()方法(单独的函数,非类)
-
实现迭代器和迭代
- 用foreach()取出一个对象的所有属性
- iterator迭代器
- 将类型转换成字符串
- 使用Reflection反射API
-
错误和异常处理
- 异常处理的概念
- 异常控制结构
- Exception类
- 用户自定义异常
-
写文件三种错误
- 文件无法打开
- 无法获得写权限
- 文件无法写入
- 异常和php的其他错误处理机制