PHP Tapez des objets génériques


Exemple

Étant donné que les objets PHP n'héritent d'aucune classe de base (y compris stdClass ), il n'y a pas de prise en charge pour le type indiquant un type d'objet générique.

Par exemple, le ci-dessous ne fonctionnera pas.

<?php

function doSomething(object $obj) {
    return $obj;
}

class ClassOne {}
class ClassTwo {}

$classOne= new ClassOne();
$classTwo= new ClassTwo();

doSomething($classOne);
doSomething($classTwo);

Et va jeter une erreur fatale:

Erreur fatale: UnCaught TypeError: l'argument 1 transmis à doSomething () doit être une instance d'objet, instance de OperationOne donnée

Une solution à ce problème consiste à déclarer une interface dégénérée qui ne définit aucune méthode et à laquelle tous vos objets implémentent cette interface.

<?php

interface Object {}

function doSomething(Object $obj) {
    return $obj;
}

class ClassOne implements Object {}
class ClassTwo implements Object {}

$classOne = new ClassOne();
$classTwo = new ClassTwo();

doSomething($classOne);
doSomething($classTwo);