(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — Utilise une simulation au lieu d'une classe pour de nouveaux objets
Si mock
est une chaîne contenant le nom d'une classe alors elle sera instanciée à la place de
class
. mock
peut aussi être un objet.
Note:
Seul l'accès dynamique aux propriétés et méthodes utilisera l'objet
mock
. L'accès statique utilise toujours laclass
originale. Voir l'exemple ci-dessous.
class
Le nom de la classe à simuler.
mock
La simulation à utiliser sous forme de chaîne contenant le nom de la classe à utiliser ou un objet.
Si une chaîne est passée, elle doit être le nom de la classe entièrement qualifié. Il est
recommandé d'utiliser la constante magique ::class
dans ce cas.
Aucune valeur n'est retournée.
Version | Description |
---|---|
PECL uopz 6.0.0 | Simuler les membres statiques n'est plus supporté par cette fonction. uopz_redefine() et uopz_set_return(), ou Componere peuvent être utilisés à la place. |
Exemple #1 Exemple 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();
?>
L'exemple ci-dessus va afficher :
mockA
Exemple #2 Exemple 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();
?>
L'exemple ci-dessus va afficher :
mockA
Exemple #3 uopz_set_mock() et membres statiques
Depuis uopz 6.0.0, la simulation des membres statiques n'est plus supportée.
<?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();
?>
L'exemple ci-dessus va afficher :
A A
L'exemple ci-dessus affiche avec uopz 5:
mockA mockA