Users::find($user_id);
Users::create(['name' => 'foobar']);
$s = new Service($id);
$s->field = 'FooBar';
$s->update();
Reference::findByType(Type::ORGS);
interface Query
{
/**
* @return string
*/
public function result();
}
class QueryInsert implements Query
{
public function result()
{
return 'QueryInsertString';
}
}
class QueryDelete implements Query
{
public function result()
{
return 'QueryDeleteString';
}
}
class QueryCollection
{
protected $queries = [];
/**
* @return void
*/
public function setQuery(Query $query)
{
$this->queries[] = $query;
}
/**
* @return string
*/
public function render()
{
$str = '';
foreach ($this->queries as $query) {
$str .= $query->result();
}
return $str;
}
}
$obj->collect($query1, $query2, $query3);
... но, без этого никак? а то запись с возвращением объектов подзапросов и потом передача их в коллектор будет не очень компактна =\ public function set(QueryInterface $query)
{
$args = func_get_args();
foreach ($args as $k => $argument)
if ($query instanceof QueryInterface && ! $this->contains($argument))
$this->attach($argument);
return $this;
}
public function set()
{
$args = func_get_args();
foreach ($args as $k => $argument)
if ($argument instanceof QueryInterface && !$this->contains($argument))
$this->attach($argument);
else
throw new \LogicException('bag arg');
return $this;
}