public function __construct($dao = null) { if ($dao) { Assert::isTrue($dao instanceof ProtoDAO); } $this->dao = $dao; $this->logic = Expression::andBlock(); $this->order = new OrderChain(); $this->strategy = FetchStrategy::join(); $this->projection = Projection::chain(); }