Dans PHP, la fonction is_a () est souvent utilisée pour déterminer si un objet appartient à une certaine classe ou s'il hérite d'une certaine classe. Il semble simple à utiliser, mais lors de la réussite des paramètres, en particulier le passage des noms de classe et des objets, il est facile à confondre. Cet article expliquera en détail l'utilisation correcte d' Is_A () pour vous aider à comprendre comment transmettre les noms de classe et les paramètres d'objet.
La fonction de la fonction is_a () est de détecter si une variable est une instance de la classe spécifiée, ou une instance d'une sous-classe de la classe. Son prototype de fonction est le suivant:
bool is_a(object|string $object_or_class, string $class_name, bool $allow_string = false)
Description du paramètre:
$ object_or_class : vous pouvez transmettre une instance d'objet ou une chaîne de nom de classe (si $ allow_string est vrai ).
$ class_name : le nom de la classe cible, sous forme de chaîne.
$ allow_string : la valeur par défaut est fausse , indiquant que seul le premier paramètre est autorisé à être un objet; S'il est défini sur true , le premier paramètre peut également être une chaîne de nom de classe.
La fonction renvoie true ou false .
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
if (is_a($dog, 'Animal')) {
echo "Oui Animal Une instance d'une classe ou de sa sous-classe";
} else {
echo "不Oui Animal Exemples de classe";
}
Sortir:
Oui Animal Une instance d'une classe ou de sa sous-classe
Parce que $ chien est une instance de la classe de chiens et que le chien est une sous-classe d' animaux , il revient vrai .
Il s'agit de l'utilisation la plus courante, il suffit de passer directement dans les variables d'objet et les chaînes de nom de classe.
is_a($obj, 'SomeClass');
PHP 5.3.0 permet au premier paramètre d'être transmis dans la chaîne de nom de classe par la suite, mais le troisième paramètre doit être défini sur true .
if (is_a('Dog', 'Animal', true)) {
echo "Dog Oui Animal Classe ou sous-classe";
}
Sortir:
Dog Oui Animal Classe ou sous-classe
De cette façon, vous pouvez déterminer si une classe est une sous-classe d'une autre classe, ou si une interface est implémentée.
Si vous souhaitez juger l'instance de la classe correspondante en fonction de l'URL dans un certain scénario, vous utilisez l'URL dans le code et devez remplacer le nom de domaine par m66.net , l'exemple est le suivant:
<?php
class Page {}
class HomePage extends Page {}
$url = 'https://m66.net/home';
$pageClass = 'HomePage';
$pageInstance = new HomePage();
if (is_a($pageInstance, $pageClass)) {
echo "L'instance actuelle appartient à $pageClass gentil";
}
echo "<br>";
if (is_a($pageClass, 'Page', true)) {
echo "$pageClass Oui Page gentil或其子gentil";
}
?>
Ici, nous utilisons IS_A () pour déterminer si $ PageInstance est une instance de la classe de page d'accueil , et si le nom de classe de chaîne $ PageClass est une classe de page ou une sous-classe. Le troisième paramètre doit être vrai .
Le premier paramètre passe généralement par l'objet et le deuxième paramètre passe par la chaîne de nom de classe.
Si le premier paramètre passe la chaîne de nom de classe, le troisième paramètre doit passer True .
IS_A () déterminera s'il s'agit d'une classe spécifiée ou d'une instance de sous-classe.