Skip to content

Latest commit

 

History

History
64 lines (44 loc) · 2.67 KB

File metadata and controls

64 lines (44 loc) · 2.67 KB

Инструменты PhpMocker - Получение значения непубличных констант

<< Оглавление | Инструменты

DraculAid\PhpMocker\NotPublic::readConstant() и DraculAid\PhpMocker\NotPublic::constant() позволяют читать protected и private константы. При чтении private констант можно прочитать только константы определенные в классе, при чтении констант определенных в родителях будет выброшена критическая ошибка

DraculAid\PhpMocker\NotPublic::readConstant() Принимает имя класса (или объект) и имя константы

DraculAid\PhpMocker\NotPublic::constant() Использует объект "читатель непубличных элементов класса"

use DraculAid\PhpMocker\NotPublic;

// создание тестового класса
class TestClassName {
    protected const PROTECTED_CONST = 'protected_const_value';
    private const PRIVATE_CONST = 'private_const_value';
}

// Создание потомка тестового класса
class ChildClassName extends TestClassName {}

// * * *

// "процедурный стиль"

// Выведет 'protected_const_value'
echo NotPublic::readConstant(TestClassName::class, 'PROTECTED_CONST') . "\n";
// Выведет 'private_const_value'
echo NotPublic::readConstant(TestClassName::class, 'PRIVATE_CONST') . "\n";

// Выведет 'protected_const_value'
echo NotPublic::readConstant(ChildClassName::class, 'PROTECTED_CONST') . "\n";
// Этот вызов закончится ошибкой, константа PRIVATE_CONST private и существует только в классе родителе
echo NotPublic::readConstant(ChildClassName::class, 'PRIVATE_CONST') . "\n";

// * * *

// можно использовать объект, а не имя класса

$object = new TestClassName();

// Выведет 'protected_const_value'
echo NotPublic::readConstant($object, 'PROTECTED_CONST') . "\n";
// Выведет 'private_const_value'
echo NotPublic::readConstant($object, 'PRIVATE_CONST') . "\n";

// * * *

// "Работа через объект-читатель"

// Получение "читателя"
$reader = NotPublic::instance(TestClassName::class);

// Выведет 'protected_const_value'
echo $reader->constant('PROTECTED_CONST') . "\n";
// Выведет 'private_const_value'
echo $reader->constant('PRIVATE_CONST') . "\n";

<< Оглавление | Инструменты