您的位置:首页 > 运维架构

OOP 相关知识的复习

2017-09-17 16:31 204 查看


OOP 相关知识的复习

1.OOP真正的价值在于封装
2.构造函数 __construct()
   析构函数 __destruct()

3.静态属性和静态方法:
1)静态属性是属于类的变量而不属于对象
2)静态方法中不能引用this关键字
静态方法使用 :: 调用 如Courier::getSomething()
4.命名空间
1)从PHP5.3开始支持命名空间
2)
namespace shipping;
class Courier{}

Courier //在shoipping 命名空间中
shipping/Courier //在全局命名空间中
/shipping/Courier //在其他命名空间中需要从顶部开始 将引导命名空间运算符 ‘/’ 放在类名前



5.复制对象
clone关键字会从同一个类中创建一个对象,这个对象和原对象一样具有相同的属性
$courier = new Courier("newObject");
$other_courier = clone $courier;


6.异常
try/catch块
try{
$db = new PDO("mysql:host=nonsense");
echo "Connected" to database;
}catch (Expection $e){
echo "Oops!".$e->getMessage();
}



PHP没有finally子句
抛出异常
throw new Exception('Something Error');
全局异常处理程序,用于捕获未被捕获的异常
function handleMissedException($e){
echo "error";
error_log('Unhandled Exception:'.$e->getMassage().'in file'.$e->getFile().'on line'.$e->getLine());//将错误写入文件
}

set_exception_handler('handleMissedException');//调用set_exception_handler()方法注册这个函数来处理未捕获的异常

throw new Exception('just testing!');
}

7.神奇方法
__call():当调用一个没有在类中声明的方法时,可以调用__call()方法代替声明另一个方法。__call($name,$parse)
$name接收不存在的方法名,$parse作为一个数组接受参数

_toString()输出对象,在echo该对象时会调用__toString()方法
public function __toString() {
// TODO: Implement __toString() method.
return $this->name.'('.$this->home_country.')';
}
序列化对象:将对象转换为一个文本的格式,以便存储
$u = serialize($courier);
反序列化
$u2 = unserialize($u);
序列化与反序列化时会分别调用__sleep()和__wakeup()方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php oop