创建类
[修饰关键字] class ClassName(){
【public ,private protected static var】$name ; //必须要有修饰词,不确定性质时 用var
【public ,private protected static 】 function funName(){}
}
名字的首字母都大写
用类来创建对象
$object = new ClassName;
外部访问类的属性、方法
$object->name;
$object->funName();
内部访问类的属性、方法
使用 $this;......代表调用这个方法的对象 public function funName(){$this->name = "liubin";}
构造方法:
1.)与类同名的方法 php4 中使用||php5也能用
2.)__construct(){} //统一使用这个名字 其他使用完全一致 、、php5中使用这个,
php5会现找2,没有2的话再去找 1;
魔术方法: 魔术方法会自动调用
__construct() //构造 。。初始化对象
__destruct() //析构方法 。。当对象被释放之前最后一个自动调用的函数,关闭一些资源
__set($proName, $proValue)//直接设置私有属性值得时候自动调用的方法,$object->name = "liubin";
__get($proName)//直接获取私有属性的时候自动调用的方法 .。$proName是要获取的属性名, $object->name; $proName 就是 name;
__ isset($proName)//直接查看isset()对象中私有属性是否存在时自动调用的方法,否则直接在外部isset($object->name)时,会返回false;
__unset($proName)//直接删除unset()对象中私有属性时 自动调用的方法,
__clone()、、//$object1 = $object; 这种是两个引用指向的同一个地址
、、//$object1 = clone $object 这种的是两个值一样的对象
、、//在这个方法中 $this 代表副本的对象,$that 代表原本的对象
__call($functionName,$args) //在调用对象中不存在的方法时自动调用,在这里处理这种错误;所有参数会作为一个数组放入$args中
__toString()、、//直接输出对象引用是自动调用,用来快速获取对象的字符串表示的最便捷方式
__autoload($className)、、//只要在页面中使用到一个类,就会调用到这个方法,参数为类名(include的时候加载的是文件名)
对象串行化(序列化),讲一个对象转化为二进制串(对象是存在内存中的)
1.)将对象长时间存储在数据库或者文件中的时候
2.)将对象在多个PHP文件中传输的时候
$str = serialize($object); 返回一个串行化的二进制串
$object = unserialize($str);返回来的就是一个新的对象
__sleep()//实在序列化的时候自动调用的方法
只要这个方法中发挥一个数组,数组中有几个成员属性就序列化几个,
__weakup()、、//是在反序列化是自动调用的方法
在反序列化的时候处理数据-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP中常用的关键字
final
1.)不能修饰累的属性
2.)自能修饰类和方法
作用:
和java一样
final类不可继承,
final方法不可被重写
static
1.)可以修饰成员属性和成员方法,不能修饰类
2.)static修饰的成员属性可以被所有的类的对象共享
3.)静态数据存放在内存中的数据段中
4.)静态数据是在类第一次被加载时分配到内存中的,以后再用到类时就直接使用
5.)只要在程序中使用到这个类(有这个类名出现即使被使用了),就被加载了
6.)静态方法,不能访问非静态的成员(与解析的过程有关系)
注意:静态的成员 都要使用类名去访问,不用创建对象(一般也不去用对象访问
类名::静态成员
如果在类的内部使用静态成员可以使用 self 代表本类
const
1.)只能修饰成员属性,
2.)类中声明常量属性使用const 用法:const HOST= “130.182.1.1”;
3.)命名方式和 define是一样的效果
4.)访问方式和静态成员属性是一样的(在类外部:类名::常量;再累内部:self::常量)