类
class obj{
function getinfo(){
}
}
构造方法:new 对象的时候调用
function __construct(){}
析构方法:释放对象的时候调用
function __destruct(){}
魔术方法
设置私有属性
function __set($param,$value){
$this->$param=$value;
}
获取私有属性
function __get($param){
return $this->$param;
}
isset私有属性时调用
function __isset($param){
return isset($this->$param);
}
unset 私用属性时调用
function __unset($param){
unset($this->$param);
}
类被当做字符串使用时调用,例如直接echo 对象名
function __toString(){
}
继承类
class obj extends base{
}
重载方法,调用父类方法
function getinfo(){
parent::getinfo();
echo '重载方法';
}
静态方法/属性
class obj {
static $name;
static function getinfo(){
echo self::$name;
}
}
obj::$name = 'this is name';obj::getinfo();
常量 ,不可赋值
class obj{
const TEST='123';
}
obj::TEST;
抽象类 抽象方法,由子类实现方法,也可保护非抽象方法,子类必须实现全部抽象方法
abstract class abclass
{
abstract function fun1();
function fun2(){
echo '抽象类里的方法';
}
}
class class1 extends abclass{
function fun1(){
echo '实现抽象类方法';
}
}
接口,只能定义方法,不能实现方法,子类必须实现全部方法
interface ifclass{
function fun1();
function fun2();
}
class class2 implements ifclass{
function fun1(){
echo '实现接口方法1';
}
function fun2(){
echo '实现接口方法2';
}
}
final 不能被继承
final class class3 {
function fun1(){
echo '此类不能被继承';
}
}
序列化反序列化
$stooges = array('Moe','Larry','Curly');
$new = serialize($stooges);
print_r($new);
echo "<br />";
print_r(unserialize($new));
结果:a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ( [0] => Moe [1] => Larry [2] => Curly )