PHP 8.4.1 Released!

uopz_set_mock

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

uopz_set_mockUtilise une simulation au lieu d'une classe pour de nouveaux objets

Description

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

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 la class originale. Voir l'exemple ci-dessous.

Liste de paramètres

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.

Valeurs de retour

Aucune valeur n'est retournée.

Historique

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.

Exemples

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

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top