array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.uopz-set-mock.php', 1 => 'uopz_set_mock', ), 'up' => array ( 0 => 'ref.uopz.php', 1 => 'Функции Uopz', ), 'prev' => array ( 0 => 'function.uopz-set-hook.php', 1 => 'uopz_set_hook', ), 'next' => array ( 0 => 'function.uopz-set-property.php', 1 => 'uopz_set_property', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/uopz/functions/uopz-set-mock.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — Использовать имитатор вместо класса для новых объектов
Если mock
- это строка, содержащая имя класса, тогда он
будет создан вместо class
. mock
также может быть объектом.
Замечание:
Только динамический доступ к свойствам и методам будет использовать объект
mock
. Статический доступ будет использовать оригинальныйclass
. Смотрите пример ниже.
class
Имя класса, который будет имитирован.
mock
Имитатор в виде строки, содержащей имя используемого класса, либо объект.
Если передана строка, она должна быть содержать абсолютное имя класса.
В этом случае рекомендуется использовать магическую константу ::class
.
Функция не возвращает значения после выполнения.
Версия | Описание |
---|---|
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