什么是面向对象?面向对象的简单了解!返回列表
上传时间:2015-02-02 内容关键字:什么是面向对象?面向对象的简单了解!
答案:
通过__set()方法,把属性的设置 --》 都放到一个数组里,下次处理时,专门处理这个数 组就可以了。这样就不会和其他属性相冲突的,tp就是这么做的 。如下:
class UserModel{
protected $emial = "user@163.com";
protected $data = array();
public function __set($k,$v){
//$this->$k=$v 并没有真正赋成自己的属性。
$this->data[$k]=$v;//而是放在了一个数组里。
}
public function add(){
$sql = 'insert into table (';
$sql .= implode(',',array_keys($this->data));
$sql .= ") vales ('";
$sql .= implode("','", array_values($this->data));
$sql .="')";
return $sql;
}
public function __get($p){
return isset($this->data[$p]?$this->data[$p]:null;)
}
public function __isset($p){
return isset($this->data[$p])
}
//在查看有没有这个数据的时候,也不会真的去本类中查看有没有这个属性,
public function __unset($p){
unset($this->data[$p]?$this->data[$p]:null)
}
}
$userModel = new UserModel();
$userModel->username = 'lisi';
$userModel->email= 'lisi@126.com';
$userModel->sex= 'man';
echo $userModel->add();
unset($userModel->email);//删除的是$data数组下的成员,而不是本类属性。
5. __call__callStatic:
1. __call :
class Human{}
$lisi = new Human();
$lisi->say();
// 报错:定义了一个未定义的方法
//Fatal error: Call to undefined method Human::say() in
class Human{
public function hello(){
echo "hello--","
";
}
public function __call($method,$arguments){
echo "有对象调用",$method,"方法
";
echo "还打印了参数
";
}
}
$lisi = new Human();
$lisi->hello();
$lisi->say(1,2,3);
总结:调用不可见(不存在或者无权限)的方法时,自动调用。
$lisi->say(1,2,3); -----》 没有say()方法 ---》 __call(‘say’,array(1,2,3))运行
2. __callStatic:
总结:调用不可见的静态方法时,自动调用。
Human::cary(‘a’,’b’,’c’) ---》 没有cry方法--》Human::__callStatic(‘cry’,array(‘a’,’b’,’c’));
- 上一篇:php-fpm 基础介绍
- 下一篇:COOKIE、SESSION之彻底搞定!