[php]代码库
<?php
class Test
{
protected $options = array();
//这里就是了, 通过判断调用的函数名, 如果存在, 那么设置参数, 返回自己
public function __call($func, $args)
{
if (in_array($func, array(
'form',
'field',
'join',
'order',
'where',
'limit',
'更多....'
)))
{
$this->options[$func] = $args;
return $this; //这里返回了本对象
}
}
}
$test = new Test();
$test->form('test'); // 这样调用就相当于设置 $test->options['form'] = 'test';
//在ThinkPHP中这种连贯操作都是以find或者findAll结尾的.
//所以前面这些方法的调用只是在设置查询的参数而已
//在find或者findAll方法中, 是根据$this->options参数的不同执行不同的SQL
//比如这样
public function find() {
$sql = \\"SELECT {$this->options['field']} FROM {$this->options['form']}\\";
$sql .= isset($this->options['where']) ? \\" WHERE {$this->options['where']}\\" : '';
// More
echo $sql;
}
//该片段来自于http://yuncode.net