"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre les erreurs lors du passage d’un tableau d’objets en tant qu’arguments de fonction ?

Comment résoudre les erreurs lors du passage d’un tableau d’objets en tant qu’arguments de fonction ?

Publié le 2024-11-08
Parcourir:537

How to Resolve Errors When Passing an Array of Objects as Function Arguments?

Indice de type : tableau d'objets

Lorsque vous transmettez un tableau d'objets en tant qu'argument à une fonction, vous pouvez rencontrer une erreur si le le type d’argument n’est pas spécifié. Par exemple, considérons le code suivant :

class Foo {}

function getFoo(Foo $f) {}

Tenter de transmettre un tableau d'objets Foo à getFoo entraînera une erreur fatale :

Argument 1 passed to getFoo() must be an instance of Foo, array given

Pour surmonter ce problème, vous pouvez spécifier le type d'argument sous forme de tableau du type d'objet souhaité à l'aide d'une classe personnalisée. Par exemple, une classe ArrayOfFoo peut être définie comme suit :

class ArrayOfFoo extends \ArrayObject {
    public function offsetSet($key, $val) {
        if ($val instanceof Foo) {
            return parent::offsetSet($key, $val);
        }
        throw new \InvalidArgumentException('Value must be a Foo');
    }
}

Cette classe garantit que seuls les objets Foo peuvent être attribués à ses éléments. La fonction getFoo peut ensuite être mise à jour pour accepter un argument ArrayOfFoo :

function getFoo(ArrayOfFoo $foos) {
    foreach ($foos as $foo) {
        // ...
    }
}

Maintenant, transmettre un tableau d'objets Foo à getFoo fonctionnera comme prévu.

Alternativement, la bibliothèque Haldayne peut être utilisée pour simplifier le processus :

class ArrayOfFoo extends \Haldayne\Boost\MapOfObjects {
    protected function allowed($value) { return $value instanceof Foo; }
}

Cette classe fournit des vérifications intégrées pour garantir que seuls les objets Foo sont autorisés dans le tableau.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729205596. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3