cakephp oracle,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都具有這個特性!
總結
以上是生活随笔為你收集整理的cakephp oracle,Cakephp的魔法函数解析,findBy…的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 柿子和鸡蛋能一起吃吗
- 下一篇: 综艺节目php灭灯_非诚勿扰php程序员