php: получить подсказку типа переменной, используя отражение - PullRequest
12 голосов
/ 06 июня 2011
class Expense {

    /**
     * @var int
     */
    private $id;
}

Я хотел бы получить подсказку типа переменной в моем классе, используя отражение, потому что значение по умолчанию равно нулю.

Ответы [ 3 ]

15 голосов
/ 06 июня 2011

Попробуйте:

<?php
class Expense {

    /**
     * @var int
     */
    private $id;
}

$refClass = new ReflectionClass('Expense');
foreach ($refClass->getProperties() as $refProperty) {
    if (preg_match('/@var\s+([^\s]+)/', $refProperty->getDocComment(), $matches)) {
        list(, $type) = $matches;
        var_dump($type);
    }
}

Вывод :

string(3) "int"
3 голосов
/ 06 июня 2011

Получить полный докблок:

$reflection = new ReflectionProperty('Expense', 'id');

$doc = $reflection->getDocComment();
0 голосов
/ 06 июня 2011

Небольшое предупреждение - PHP-ускорители и некоторые библиотеки (например, ядро ​​Symfony) удаляют комментарии, довольно часто при втором запуске.

...