一.基础知识
1.单双引号皆可声明字符串;双引号中可以直接解析变量,又可以直接使用转义
字符,单引号则不可以,最好使用单引号(效率高);
2.数据类型间的相互转换:
setType(变量型,类
型);//int,integer,float,double,real,bool,Boolean,string,array,object;
$变量=intval(变量或值);
相关函数:
isset();empty();unset();//注销变量;setType();getType();
is_bool();is_int();
define("常量名",值);
3.运算符号:
算术运算符:+ - * / % ++ --
字符串运算符:.
赋值运算符:= += -= *= /= %= ++ --
比较运算符号:> < >= <= ==(比较不转换类型) ===(比较转换类型) !
=或<> !==
逻辑运算符 &&或and ||或or !或not
位运算符: & | ^ << >> >>>
其他运算符:?:(三元运算符) '' @ =>(键名=>键值) -> :: & $
4.PHP的变量范围:
gloabal//要通过这个关键字将全局变量包含到函数中才能使用
static//静态变量只能声明在函数中,不能在全局声明;保存在静态代码段中
,只在第一次调用的时候声明。
变量函数:$var=hell;$var();//将寻找与变量名值相同的函数 hello()
5.require:用于静态包含;require_once
include:用于动态包含;include_once
6.数组的遍历:
for语句循环遍历//不是首选;
foreach循环遍历,foreach(数组变量 as 下标变量=>值变量){}
while() list() each() 组合循环遍历
each():需要一个数组参数,返回一个数组(0,1,key,value,)
list():list()=array(),数组中的元素个数要与list()中的参数个数相同
数组内部的指针控制函数
next(),prev(),reset(),end(),current(),key()//参数均为数组,移动数组
指针
7.超全局数组:
$_REQUEST//经由GET,POST,COOKIE机制提交到脚本的变量,因此该数组不值得
信任,建议不去使用
8.数组相关函数:
array_values();
array_keys();
in_array();
array_key_exists();
array_flip();//交换数组中的键和值
array_count_values()//统计数组中所有的值出现的次数
array_filter()//用回调函数来过滤数组中的单元
arry_walk(),array_map()
排序函数:sort(),rsort(),usort()......
数据结构相关:array_push(),array_pop()//堆栈
array_unshift(),array_shitf()//队列
二.面向对象
1.对象和数组都是复合类型
2.对象的三大特性:封装,继承,多态
封装:使用private,protected,public实现;
继承:父类--基类,子类--派生类;
extend//子类继承父类的protected,public
重载:子类可重载父类方法,但是权限不能比父类低;
子类中编写构造方法,父类中也有构造方法一定要去调用一次呗覆盖的
那个构造方法。
对象->成员 类::成员
父类名::方法名();
parent::方法名();
多态:让具有继承关系的不同类对象,可以对相同名称的成员函数调用产生
不同的反应效果。
3.构造方法:对象完成创建后第一个调用的方法__construct()
析构方法:对象被释放之前最后一个自动调用的方法__destruct()
魔术方法:在类中写了某个魔术方法,这个方法对象的功能就会添加上。
4.关键字:
final:只能修饰类和方法,不能修饰成员属性(修饰的类不能被继承和覆盖)
static:可修饰成员属性和方法,不能修饰类(可被同一个类的所有对象共享
)
静态成员::类名::成员,在内部访问其他成员 self::成员
self与$this的功能极其相似,但二者又不相同。$this不能引用静态成员和常
量。self更像类本身,而$this更像是实例本身。
const:只能修饰成员属性,类中声明常量。访问方式和static类似。
5.常用魔术方法:
__call()//在调用对象中不存在的方法的时就会出现系统报错,然后退出程序
__toString()//这届输出应用对象时自动调用
__clone()//克隆对象使用clone去处理,$this代表副本,$that代表原本
__autoload()//唯一一个不再类中添加的方法,在页面中使用类自动将类名传
递给这个参数。
serialize:参数是一个对象,返回来的就是串行后的二进制串
unserialize():参数就是对象的二进制串,返回来的就是新生成的对象
__sleep()
7.抽象类,接口,多态:
抽象类是一种特殊的类,接口是一种特殊的抽象类,而多态就要使用到抽象类
或接口。
抽象方法:没有方法体的就是抽象方法;//abstract function test()
抽象类:只要有一个抽象方法就是抽象类,要使用修饰词abtract.
其他不变,抽象类不能被实例化。
子类继承抽象类时要重载抽象类中的抽象方法。
接口:接口中的所有方法都必须是抽象方法;
只能声明常量,不能声明变量,接口的成员访问权限都必学是public;
抽象类中的最低权限是protected。
声明方式interface 类名{}(抽象方法不适用abstract);
使用接口用关键字implements;
类--接口,抽象类--接口//implements
接口--接口:extend
可继承多个接口,但是只能继承一个父类。
三.字符串的处理
php中的所有字符串处理函数,都不是在原字符串上修改的,而是返回一个新的
格式化后的字符串。
1.substr();//字符串截取
2.常用的字符串输出函数:
echo()
print()
die()--exit()
printf()
sprintf()
3.常用的字符串格式化函数:
ltrim()
rtrim()
trim()//去掉空格
str_pad()//字符串两边填充内容
strtolower()//转换成小写
strtoupper()//转换成大写
ucfirst()//首字母转换成大写
ucwords()//每个单词首字母大写
n12br()//在字符串所有新行之前加入换行标记
htmllentities()
htmlspecialchars()//上面一个和这一个防止输出HTML标签输出
stripslashes()//反引用一个斜线
strip_tags()//从字符串中去除HTML和PHP标记
number_format()//以千位分隔符方式格式化一个数字
strrev()//反转字符串
md5();//加密