Я пишу custom система расширения для php, которая позволяет определять класс с новой функцией для существующего класса и добавлять указанные функции к классу после его определения.Настроить тип hinting в PHP
Как уже говорилось, расширения написаны как отдельный класс, позвоните один из MyExtension
и скажем, что это расширение распространяется на существующие классы, MyExtendedClass1
и MyExtendedClass2
. Таким образом, MyExtension
добавляет некоторые функции к MyExtendedClass1
И MyExtendedClass2
.
Что я хочу сделать, это позволить пользователям набирать базу подсказок на MyExtension.
// $object is guaranteed to either be an instance of MyExtension
// or be a class that is extended with MyExtension
function someFunction(MyExtension $object) {
}
$post = new MyExtendedClass1(); // Is extended by MyExtension
someFunction($post);
$post = new MyExtendedClass2(); // Is extended by MyExtension
someFunction($post);
Что мне интересно:
Есть ли способ, чтобы «добавить тип к объекту»? Есть ли способ, которым я могу обмануть проверку типов, чтобы разрешить эти вызовы.
Это еще не работает на вас? [Это уже поддерживается поведение] (http://codepad.org/05MBHxCl) – castis
Вы можете использовать как тип подсказки 'MyExtendedClass', так как все классы' MyExtension' будут расширять 'MyExtendedClass'. Или, что лучше, вы можете создать интерфейс, который должен реализовывать все классы расширения и использовать этот интерфейс для подсказки типа. – akDeveloper
В PHP это называется ** Type Hinting **. Более подробную информацию можно найти на веб-сайте PHP: [Тип объявления] (http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration) – icecub