uopz_set_mock

(PECL uopz 5, PECL uopz 6)

uopz_set_mockИспользовать имитататор вместо класса для новых объектов

Описание

uopz_set_mock ( string $class , mixed $mock ) : void

Если mock - это строка, содержащая имя класса, тогда он будет создан вместо class. mock также может быть объектом.

Замечание:

Только динамический доступ к свойствам и методам будет использовать объект mock. Статический доступ будет использовать оригинальный class. Смотрите пример ниже.

Список параметров

class

Имя класса, который будет имитирован.

mock

Имитатор в виде строки, содержащей имя используемого класса, либо объект. Если передана строка, она должна быть содержать абсолютное имя класса. В этом случае рекомендуется использовать магическую константу ::class.

Список изменений

Версия Описание
uopz 6.0.0 Имитирование статических функций более не поддерживаются этой функцией. Вместо это го следует использовать uopz_redefine() и uopz_set_return(), или Componere.

Примеры

Пример #1 Пример использования uopz_set_mock()

<?php
class {
    public function 
who() {
        echo 
"A";
    }
}

class 
mockA {
    public function 
who() {
        echo 
"mockA";
    }
}

uopz_set_mock(A::class, mockA::class);
(new 
A)->who();
?>

Результат выполнения данного примера:

mockA

Пример #2 Пример использования uopz_set_mock()

<?php
class {
    public function 
who() {
        echo 
"A";
    }
}

uopz_set_mock(A::class, new class {
                            public function 
who() {
                                echo 
"mockA";
                            }
                        });
(new 
A)->who();
?>

Результат выполнения данного примера:

mockA

Пример #3 uopz_set_mock() и статические члены класса

Начиная с uopz 6.0.0, имитация статических членов класса не поддерживается.

<?php
class {
    public static function 
who() {
        echo 
"A";
    }
}

uopz_set_mock(A::class, new class {
                            const 
CON 'mockA';
                            public static function 
who() {
                                echo 
"mockA";
                            }
                        });
echo 
A::CONPHP_EOL;
A::who();

Результат выполнения данного примера:

A
A

Вывод примера в uopz 5:

mockA
mockA

Смотрите также

  • uopz_get_mock() - Получить текущий имитатор (mock) для класса
  • uopz_unset_mock() - Удалить ранее установленный имитатор