Интерфейсы PHP
Интерфейс позволяет определить, какие публичные методы класс ДОЛЖЕН реализовать, без определения того, как они должны быть реализованы.
Интерфейсы объявляются с помощью ключевого слова
interface, и методы, объявленные в интерфейсе, должны быть
public:
interface ИмяИнтерфейса {
public function метод1();
public function метод2();
}Чтобы реализовать интерфейс, класс должен использовать ключевое слово
implements.
Класс, который реализует интерфейс, должен реализовать все методы интерфейса.
class ИмяКласса implements ИмяИнтерфейса {
public function метод1() {
// некоторый код
}
public function метод2(){
// некоторый код
}
}Следующий пример определяет интерфейс с именем Animal с одним публичным методом (makeSound()). Классы Cat и Dog реализуют интерфейс Animal, и оба должны включать метод makeSound():
Пример
<?php
// Определяем интерфейс
interface Animal {
public function makeSound();
}
// Реализуем интерфейс в классе
class Cat implements Animal {
public function makeSound() {
echo "Мяу";
}
}
// Реализуем интерфейс в другом классе
class Dog implements Animal {
public function makeSound() {
echo "Гав";
}
}
$cat = new Cat();
$cat->makeSound();
$dog = new Dog();
$dog->makeSound();
?>
Попробуйте сами »
PHP - Интерфейсы против абстрактных классов
Интерфейсы похожи на абстрактные классы. Различия между интерфейсами и абстрактными классами:
- Интерфейсы не могут иметь свойств, в то время как абстрактные классы могут
- Все методы интерфейса должны быть публичными, в то время как абстрактные методы могут быть публичными или защищенными
- Все методы в интерфейсе являются абстрактными, поэтому они не могут быть реализованы в коде, и ключевое слово abstract не требуется
- Классы могут реализовывать интерфейс и одновременно наследоваться от другого класса
Интерфейсы позволяют легко использовать различные классы одинаковым образом. Когда один или несколько классов используют один и тот же интерфейс, это называется "полиморфизмом".
PHP - Использование интерфейсов
Следующий пример определяет интерфейс с именем Animal с двумя публичными методами (fromFamily() и makeSound()). Классы Cat и Dog реализуют интерфейс Animal и должны включать оба метода: fromFamily() и makeSound():
Пример
<?php
interface Animal {
public function fromFamily();
public function makeSound();
}
class Cat implements Animal {
public function fromFamily() {
echo "Из семейства: Кошачьи (родственники: львы, тигры, ягуары, рыси, пумы и гепарды).<br>";
}
public function makeSound() {
echo "Звук: Мяу.";
}
}
class Dog
implements Animal {
public function fromFamily() {
echo "Из семейства: Псовые (родственники: волки, лисы, койоты, шакалы и домашние собаки).<br>";
}
public function makeSound() {
echo "Звук: Гав.";
}
}
echo "<h3>Кошки</h3>";
$cat = new Cat();
$cat->fromFamily();
$cat->makeSound();
echo "<h3>Собаки</h3>";
$dog = new Dog();
$dog->fromFamily();
$dog->makeSound();
?>
Попробуйте сами »