Maison > développement back-end > tutoriel php > Explication détaillée des bibliothèques de fonctions et des objets PHP

Explication détaillée des bibliothèques de fonctions et des objets PHP

藏色散人
Libérer: 2023-04-08 12:32:01
avant
2552 Les gens l'ont consulté

Explication détaillée des bibliothèques de fonctions et des objets PHP

Obsolète

Certaines fonctions ont été obsolètes ou supprimées, veuillez ne pas les utiliser

__autoload - Obsolète dans la version 7.2

call_user_method_array - Supprimé dans la version 7.0

call_user_method - Supprimé dans la version 7.0

Jugement

Vérification de l'existence de la classe

Fonctions associées

class_exists - Déterminer si la classe existe

interface_exists - Déterminer si l'interface existe

trait_exists - Déterminer si le trait existe

Le deuxième paramètre est utilisé pour déterminer s'il faut utiliser le chargement automatique s'il n'a pas encore été chargé.

class_exists ( string $class_name [, bool $autoload = true ] ) : bool
interface_exists ( string $interface_name [, bool $autoload = true ] ) : bool
trait_exists ( string $traitname [, bool $autoload = true ] ) : bool
Copier après la connexion

Exemple - Fonction de vérification d'existence de classe étendue

function common_class_exists(string $class): bool
{
    return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
}
Copier après la connexion

Vérification d'existence des membres de la classe

Fonctions associées :

property_exists - Vérifier si la propriété existe

method_exists - Vérifiez si la méthode existe

method_exists ( mixed $object , string $method_name ) : bool
property_exists ( mixed $class , string $property ) : bool
Copier après la connexion

Exemple - Implémentez une fonction de rappel, l'utilisateur peut définir l'URL de rappel via des méthodes ou des attributs

trait RedirectsUsers
{
    public function redirectPath()
    {
        if (method_exists($this, 'redirectTo')) {
            return $this->redirectTo();
        }
        return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
    }
}
Copier après la connexion

Jugement de relation de classe

Fonctions associées :

is_a — L'objet appartient à cette classe ou à la classe parent de cette classe, renvoie VRAI

is_subclass_of — Le L'objet est la sous-classe A de la classe, renvoie TRUE

is_a ( object $object , string $class_name [, bool $allow_string = FALSE ] ) : bool
is_subclass_of ( object $object , string $class_name ) : bool
Copier après la connexion

Exemple

interface A {}
interface B {}
class BaseFoo implements B {}
class Foo extends BaseFoo implements A{}
$foo = new Foo();
// 对象
is_a($foo, 'BaseFoo'); // true
is_a($foo, 'Foo'); // true
is_a($foo, 'A'); // true
// 类
is_a('Foo', 'BaseFoo'); // false
is_a('Foo', 'BaseFoo', true);  // true, 传入第三个参数,代表允许使用类名而不是示例
is_subclass_of($foo, 'Foo'); // false
is_subclass_of($foo, 'BaseFoo'); // true
is_subclass_of($foo, 'B'); // true
Copier après la connexion

Dans les situations réelles, l'opérateur instanceof

$foo instanceof Foo; // true
$foo instanceof A; // true
$foo instanceof B; // true
Copier après la connexion

est plus couramment utilisé pour faire fonctionner

Fonctions associées :

class_alias() - 为一个类创建别名
class_alias ( string $original , string $alias [, bool $autoload = TRUE ] ) : bool
Copier après la connexion

Exemple - Chargeur de nom de catégorie, utilisé pour gérer les alias de classes

class AliasLoader
{
    private $aliases;
    public function __construct(array $aliases)
    {
        $this->aliases = $aliases;
    }
    public function load($alias)
    {
        if (isset($this->aliases[$alias]))
        {
            return class_alias($this->aliases[$alias], $alias);
        }
    }
}
class LongLongLongLongFoo {}
$aliases = [
    'Foo' => 'LongLongLongLongFoo',
    'Bar' => 'LongLongLongLongBar',
];
$loader =  new AliasLoader($aliases);
$loader->load('Foo');
$foo = new Foo();
var_dump($foo);  // object(LongLongLongLongFoo)#3395
Copier après la connexion

Get

Obtenez toutes les fonctions associées

 :

get_declared_traits — Renvoie un tableau de tous les traits définis

get_declared_interfaces — Renvoie un tableau contenant toutes les interfaces déclarées

get_declared_classes — Renvoie un tableau composé des noms des classes définies

Ces fonctions sont rarement nécessaires en pratique

foreach (get_declared_classes() as $class) {
    $r = new \ReflectionClass($class);
}
Copier après la connexion

Obtenir des classes

Connexe function

get_call_class — Le nom de la classe de liaison statique tardive, renvoie false lorsqu'elle est utilisée en dehors de la classe

get_class — Renvoie le nom de classe de l'objet

get_parent_class — Renvoie le object Ou le nom de la classe parent de la classe

get_called_class ( void ) : array
get_class ([ object $object = NULL ] ) : string
get_parent_class ([ mixed $obj ] ) : string
Copier après la connexion

Exemple - Obtenir la classe d'exception lorsqu'une exception est levée

throw (new ModelNotFoundException)->setModel(get_called_class());
Copier après la connexion

Obtenir le membre de la classe

Fonctions associées :

get_class_methods — Renvoie un tableau composé des noms de méthodes de la classe

get_class_vars — Renvoie un tableau composé des attributs par défaut de la classe

get_object_vars — Renvoie un tableau associatif composé d'attributs d'objet

Exemple - Récupérer toutes les propriétés d'accesseur dans une classe

class Foo {
    public function getFullNameAttribute()
    {
    }
    public function getTextAttribute()
    {
    }
    public static function getMutatorMethods()
    {
        preg_match_all(&#39;/(?<=^|;)get([^;]+?)Attribute(;|$)/&#39;, implode(&#39;;&#39;, get_class_methods(static::class)), $matches);
        return $matches[1];
    }
}
Foo::getMutatorMethods()
// [
//     "FullName",
//     "Text",
// ]
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal