vendor/jackalope/jackalope/src/Jackalope/Query/Query.php line 108
<?phpnamespace Jackalope\Query;use PHPCR\UnsupportedRepositoryOperationException;use PHPCR\RepositoryException;use PHPCR\ItemNotFoundException;use PHPCR\Query\QueryInterface;use Jackalope\ObjectManager;use Jackalope\FactoryInterface;/*** Abstract Query implementation for the different Query-languages** This can never be legally created if the transport does not implement* QueryInterface.** @license http://www.apache.org/licenses Apache License Version 2.0, January 2004* @license http://opensource.org/licenses/MIT MIT License** @api*/abstract class Query implements QueryInterface{/*** The factory to instantiate objects** @var FactoryInterface*/protected $factory;/*** The query statement** @var string*/protected $statement;/*** Limit for the query** @var integer*/protected $limit;/*** Offset to start results from** @var integer*/protected $offset;/*** The object manager to execute the query with.** @var ObjectManager*/protected $objectManager;/*** If this is a stored query, the path to the node that stores this query.** @var string*/protected $path;/*** Create a new query instance** @param FactoryInterface $factory the object factory* @param string $statement The statement for this query* @param ObjectManager $objectManager (can be omitted if you do not want* to execute the query but just use it with a parser)* @param string $path If this query is loaded from workspace with* QueryManager::getQuery(), path has to be provided here*/public function __construct(FactoryInterface $factory, $statement, ObjectManager $objectManager = null, $path = null){$this->factory = $factory;$this->statement = $statement;$this->objectManager = $objectManager;$this->path = $path;}/*** {@inheritDoc}** @api*/public function bindValue($varName, $value){throw new RepositoryException('Not Implemented...');}/*** {@inheritDoc}** @api*/public function execute(){if (null === $this->objectManager) {// if the ObjectManager was not injected in the header. this is only supposed to happen in the DBAL client.throw new RepositoryException('Jackalope implementation error: This query was built for parsing only. (There is no ObjectManager to run the query against.)');}$transport = $this->objectManager->getTransport();$rawData = $transport->query($this);$queryResult = $this->factory->get(QueryResult::class, [$rawData, $this->objectManager]);return $queryResult;}/*** {@inheritDoc}** @api*/public function cancel(){return false;}/*** {@inheritDoc}** @api*/public function getBindVariableNames(){throw new RepositoryException('Not Implemented...');}/*** {@inheritDoc}** @api*/public function setLimit($limit){$this->limit = $limit;}/*** Access the limit from the transport layer** @return int the limit set with setLimit*/public function getLimit(){return $this->limit;}/*** {@inheritDoc}** @api*/public function setOffset($offset){$this->offset = $offset;}/*** Access the offset from the transport layer** @return int the offset set with setOffset*/public function getOffset(){return $this->offset;}/*** {@inheritDoc}** @api*/public function getStatement(){return $this->statement;}/*** {@inheritDoc}** @api*/public function getStoredQueryPath(){if ($this->path === null) {throw new ItemNotFoundException('Not a stored query');}return $this->path;}/*** {@inheritDoc}** @api*/public function storeAsNode($absPath){// when implementing this, use ->getStatement***() and not $this->statement// so this works for the extending QueryObjectModel as wellthrow new UnsupportedRepositoryOperationException('Not implemented: Write');}}