Welcome to php club

PHP FAQ from PHPclub.ru: PHP5/Interface ...

Начало | Каталог | Изменения | НовыеКомментарии | Вам запрещён доступПользователи | Вам запрещён доступРегистрация | Вход:  Пароль:  

Интерфейсы

Краткое описание

Также в PHP5 появились интерфейсы. Класс может реализовывать любое количество интерфейсов. Интерфейс не может иметь свойств и должен содержать только общедоступные? методы. Класс, который реализует интерфейс не полностью, должен быть объявлен как абстрактный. Интерфейс определяется ключевым словом interface вместо class. Класс реализует интерфейсы используя ключевое слово implements после имени класса или имени класса-предка со списком интерфейсов через запятую.
Пример:

<?php
interface Throwable {
    
//public $property; // Fatal error: Interfaces may not include member variables
    //private function someMethod(); // Fatal error: Access type for interface method Throwable::someMethod() must be omitted or declared public
    
public function getMessage();
}

interface
Catchable {
    public function
getLocation();
}

class
MyExceptionBase {}

//class MyBadException implements Throwable, Catchable {} // Fatal error: Class MyBadException contains 2 abstract methods and must therefore be declared abstract (Throwable::getMessage, Catchable::getLocation)

class MyException extends MyExceptionBase implements Throwable, Catchable {
    public function
getMessage() {
        echo
"MyException::getMessage() вызван.\n";
    }
    public function
getLocation() {
        echo
"MyException::getLocation() вызван.\n";
    }
}

$o = new MyException();
$o->getMessage();
$o->getLocation();
?>

Результат:

Проблемы с обратной совместимостью

Старый код без пользовательских функций, методов или классов с именами interface или implements должен работать без изменений.

Дополнительные сведения

Описание в оригинальной документации: http://www.php.net/oop5.interfaces


 
Комментариев нет. [Показать комментарии/форму]