В PHP 5.x как я могу определить, является ли класс абстрактным или нет во время выполнения? - PullRequest
21 голосов
/ 20 марта 2009

Я перебираю массив имен классов в PHP, выбираемый с помощью get_declared_classes ().

Как я могу проверить каждое имя класса, чтобы определить, является ли этот конкретный класс абстрактным или нет?

Ответы [ 4 ]

37 голосов
/ 20 марта 2009

Используйте отражение. ReflectionClass->isAbstract()

Используйте это так:

$class = new ReflectionClass('NameOfTheClass');
$abstract = $class->isAbstract();
4 голосов
/ 20 марта 2009
<?php 

abstract class Picasso
{
    public function __construct()
    {

    }
} 

$class = new ReflectionClass('Picasso');

if($class->isAbstract())
{
    echo "Im abstract";
}
else
{
    echo "Im not abstract";
}

?>

См. Руководство: www.php.net/oop5.reflection

.
4 голосов
/ 20 марта 2009

Вы можете использовать Отражение в классе.

0 голосов
/ 20 марта 2009

Если вам нужно проверить это во время выполнения, я бы посоветовал вам пересмотреть архитектуру вашего приложения.

Никогда не пытайтесь делать это, если вы не создаете чрезвычайно сложное приложение для проверки другого кода, который вы не можете изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...