uopz_set_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

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

Описание

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

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

Замечание:

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

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

class

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

mock

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

Возвращаемые значения

Функция не возвращает значения после выполнения.

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

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

Примеры

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

<?php

class A
{
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 A {
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 A {
public static function
who() {
echo
"A";
}
}

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

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

A
A

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

mockA
mockA

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

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

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top