Cakephp的魔法函数解析,findBy…

Cakephp的一个非常有意思的特色,就是,可以通过它的Model使用类似于findBy(Fields)这样的方法直接取得数据的调用,例如,我们可以直接取得ID为5的数据,可以这样:

$data $this->ModelName->findById(5);

pr($data);

就这么简单,但是,你会发现Model里面根本没有findById这个函数。:)

 

我翻遍了Cakephp的源代码,都没有找到相关的设置,呵呵。

yoophi老师说,它使用了overload,overload是php提供的非常有魅力的功能,它可以使类执行一些自己根本没有定义的功能。

在PHP5中,我们可以这样使用它

class OverLoadable{

var $config;

 

function __construct(){

$this->config['val'] = array(

'one' => '1',

'two' => '2',

);

}

 

function __call($method, $params){

echo 'you called function name is: '.$method.'
';

echo 'you called the params is:';

echo '

';

print_r($params);

echo '

';

}

 

function __get($name){

return $this->config[$name];

}

 

function __set($name,$value){

$this->config[$name] = $value;

}

}

 

$oo = new OverLoadable();

$oo->testFunction('test',array(1,2,3));

$oo->theOthersSomeFunction('where','when','who','what');

$oo->val = 123;

echo $oo->val;

?>

overload包含三个魅力函数__call(),__get(),__set()分别是调用函数、获取属性、设置属性的回调函数,如果你在类中声明了这三个函数,那么,你对于这个类所有的函数调用、获取属性或者设置类属性,都会被相应的函数管理。

而Cakephp本身,所有的Model都是继承自Overloadable的类,所以,它所有的Model都具有这个特性!


收藏到: Del.icio.us




转载于:https://my.oschina.net/cyzhao/blog/4016

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值