-1

这是我想象的如何添加额外查询条件的一类,但它不起作用。我的问题是这是否可以做到,如果可以 - 怎么做?

class query
{
function add($y)
{
if($y) { return 'y'; }
}
function query()
{
$query->select('*');
$query->from('table');
$add = $this->add($y);
if($add) { $query->where('smt = smt'); }
}
}

调用类:

$items = new Query;
$items->add('y');
$items->query();
4

2 回答 2

1

您的方法 Query::query() 包含这行代码:

$add = $this->add($y);

但是 $y 没有定义,因此您if在 Query::add() 方法中的检查不会返回任何内容。因此, $add 是null,所以最后一个$query->where()没有被调用。

如果您需要在各种实例方法调用中保留值,请将值存储在实例变量中或将它们作为方法参数传递。

于 2013-10-29T18:24:14.830 回答
1

尝试这个 ...

class query {
private $y = null;

function $add($y=null) {
if($y!=null)
$this->y = $y;

return $this->y;
}

function query()
{
$query->select('*');
$query->from('table');
$add = $this->add();
if($add) { $query->where('smt = smt'); }
}
}

调用类:

$items = new Query;
$items->add('y');
$items->query();
于 2013-10-29T18:05:12.670 回答