<?php
interface ObjectRepository
{
/**
* Finds an object by its primary key / identifier.
*
* @param mixed $id The identifier.
*
* @return object The object.
*/
public function find($id);
/**
* Finds all objects in the repository.
*
* @return array The objects.
*/
public function findAll();
/**
* Finds objects by a set of criteria.
*
* Optionally sorting and limiting details can be passed. An implementation may throw
* an UnexpectedValueException if certain values of the sorting or limiting details are
* not supported.
*
* @param array $criteria
* @param array|null $orderBy
* @param int|null $limit
* @param int|null $offset
*
* @return array The objects.
*
* @throws \UnexpectedValueException
*/
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);
/**
* Finds a single object by a set of criteria.
*
* @param array $criteria The criteria.
*
* @return object The object.
*/
public function findOneBy(array $criteria);
/**
* Returns the class name of the object managed by the repository.
*
* @return string
*/
public function getClassName();
}
interface ModelRepositoryInterface extends ObjectRepository
{
public function createNew();
/**
* Have to use different method because ObjectRepository defines findOneBy(array $criteria);
*
* @param array $criteria
* @param array $orderBy
* @return mixed
*/
public function findOne(array $criteria, array $orderBy = null);
}