(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — Utiliza una simulación en lugar de una clase para nuevos objetos
Si mock es una cadena que contiene el nombre de una clase, se instanciará en lugar de
class. mock también puede ser un objeto.
Nota:
Solo el acceso dinámico a las propiedades y métodos usará el objeto
mock. El acceso estático sigue utilizando laclassoriginal. Consulte el ejemplo a continuación.
classEl nombre de la clase que se va a simular.
mock
La simulación a usar en forma de cadena que contiene el nombre de la clase a usar o un objeto.
Si se pasa una cadena, debe ser el nombre totalmente calificado de la clase. Se recomienda usar la constante mágica ::class en este caso.
No se retorna ningún valor.
| Versión | Descripción |
|---|---|
| PECL uopz 6.0.0 | La simulación de miembros estáticos ya no es compatible con esta función. uopz_redefine() y uopz_set_return(), o Componere pueden ser utilizados en su lugar. |
Ejemplo #1 Ejemplo de 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();
?>El ejemplo anterior mostrará:
mockA
Ejemplo #2 Ejemplo de 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();
?>El ejemplo anterior mostrará:
mockA
Ejemplo #3 uopz_set_mock() y miembros estáticos
Desde uopz 6.0.0, la simulación de miembros estáticos ya no es compatible.
<?php
class A {
const CON = '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();
?>El ejemplo anterior mostrará:
A A
El ejemplo anterior muestra con uopz 5:
mockA mockA