Интерфейсы объектов позволяют создавать код, который указывает, какие методы должен реализовать класс, без необходимости определять, как именно они должны быть реализованы.
Интерфейсы объявляются так же, как и обычные классы, но с использованием ключевого слова interface вместо class. Тела методов интерфейсов должны быть пустыми.
Все методы, определенные в интерфейсах должны быть общедоступными, что следует из самой природы интерфейса.
interface NameInterface{ public function getName(); public function setName(); } class Book implements NameInterface{ private $name; public function getName(){ return $this->name; } public function setName($name){ return $this->name = $name; } }
Если нужно проверить, реализует ли класс конкретный интерфейс, можно воспользоваться функцией class_implements().
class Book implemets NameInterface{ } $interface = class_implements('Book'); if(isset($interface['NameInterface'])){ // Book реализует инрефейс NameINterface }
Так же возможно воспользоваться классами Reflection:
class Book implemets NameInterface{ } $rc = new ReflectionClass('Book'); if($rc->implementsInterface('NameInteface')){ // Book реализует интерфейс }