cakephp oracle,Cakephp的魔法函数解析,findBy…
Cakephp的一個(gè)非常有意思的特色,就是,可以通過(guò)它的Model使用類(lèi)似于findBy(Fields)這樣的方法直接取得數(shù)據(jù)的調(diào)用,例如,我們可以直接取得ID為5的數(shù)據(jù),可以這樣:
$data?=$this->ModelName->findById(5);
pr($data);
就這么簡(jiǎn)單,但是,你會(huì)發(fā)現(xiàn)Model里面根本沒(méi)有findById這個(gè)函數(shù)。:)
我翻遍了Cakephp的源代碼,都沒(méi)有找到相關(guān)的設(shè)置,呵呵。
yoophi老師說(shuō),它使用了overload,overload是php提供的非常有魅力的功能,它可以使類(lèi)執(zhí)行一些自己根本沒(méi)有定義的功能。
在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包含三個(gè)魅力函數(shù)__call(),__get(),__set()分別是調(diào)用函數(shù)、獲取屬性、設(shè)置屬性的回調(diào)函數(shù),如果你在類(lèi)中聲明了這三個(gè)函數(shù),那么,你對(duì)于這個(gè)類(lèi)所有的函數(shù)調(diào)用、獲取屬性或者設(shè)置類(lèi)屬性,都會(huì)被相應(yīng)的函數(shù)管理。
而Cakephp本身,所有的Model都是繼承自O(shè)verloadable的類(lèi),所以,它所有的Model都具有這個(gè)特性!
總結(jié)
以上是生活随笔為你收集整理的cakephp oracle,Cakephp的魔法函数解析,findBy…的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 柿子和鸡蛋能一起吃吗
- 下一篇: 强力解毒敏是什么药