Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der PHP-Funktionsbibliotheken und -Objekte

Detaillierte Erläuterung der PHP-Funktionsbibliotheken und -Objekte

藏色散人
Freigeben: 2023-04-08 12:32:01
nach vorne
2553 Leute haben es durchsucht

Detaillierte Erläuterung der PHP-Funktionsbibliotheken und -Objekte

Veraltet

Einige Funktionen wurden veraltet oder entfernt, bitte verwenden Sie sie nicht

__autoload – Veraltet in Version 7.2

call_user_method_array – Entfernt in Version 7.0

call_user_method – Entfernt in Version 7.0

Urteil

Klassenexistenzprüfung

Verwandte Funktionen

class_exists – Bestimmen, ob die Klasse existiert

interface_exists – Bestimmen, ob die Schnittstelle existiert

trait_exists – Bestimmen Sie, ob das Merkmal vorhanden ist

Der zweite Parameter wird verwendet, um zu bestimmen, ob das automatische Laden verwendet werden soll, wenn es noch nicht geladen wurde.

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
Nach dem Login kopieren

Beispiel – Umfangreiche Klassenexistenzprüfungsfunktion

function common_class_exists(string $class): bool
{
    return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false);
}
Nach dem Login kopieren

Existenzprüfung von Klassenmitgliedern

Verwandte Funktionen:

property_exists – Prüfung ob die Eigenschaft existiert

method_exists – Überprüfen Sie, ob die Methode existiert

method_exists ( mixed $object , string $method_name ) : bool
property_exists ( mixed $class , string $property ) : bool
Nach dem Login kopieren

Beispiel – Implementieren Sie eine Rückruffunktion, der Benutzer kann die Rückruf-URL über Methoden oder Attribute definieren

trait RedirectsUsers
{
    public function redirectPath()
    {
        if (method_exists($this, 'redirectTo')) {
            return $this->redirectTo();
        }
        return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
    }
}
Nach dem Login kopieren

Klassenbeziehungsbeurteilung

Verwandte Funktionen:

is_a – Das Objekt gehört zu dieser Klasse oder der übergeordneten Klasse dieser Klasse, gibt TRUE zurück

is_subclass_of – Das Objekt ist die A-Unterklasse der Klasse und gibt TRUE zurück

is_a ( object $object , string $class_name [, bool $allow_string = FALSE ] ) : bool
is_subclass_of ( object $object , string $class_name ) : bool
Nach dem Login kopieren

Beispiel

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
Nach dem Login kopieren

In tatsächlichen Situationen wird der Operator „instanceof“

$foo instanceof Foo; // true
$foo instanceof A; // true
$foo instanceof B; // true
Nach dem Login kopieren

häufiger zum Betrieb von < verwendet 🎜>

Verwandte Funktionen:

class_alias() - 为一个类创建别名
class_alias ( string $original , string $alias [, bool $autoload = TRUE ] ) : bool
Nach dem Login kopieren

Beispiel – Lader für Kategorienamen, der zum Verwalten von Aliasnamen von Klassen verwendet wird

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 = [
    &#39;Foo&#39; => &#39;LongLongLongLongFoo&#39;,
    &#39;Bar&#39; => &#39;LongLongLongLongBar&#39;,
];
$loader =  new AliasLoader($aliases);
$loader->load(&#39;Foo&#39;);
$foo = new Foo();
var_dump($foo);  // object(LongLongLongLongFoo)#3395
Nach dem Login kopieren

Get

Alle

zugehörigen Funktionen abrufen:

get_declared_traits – Gibt ein Array aller definierten Merkmale zurück

get_declared_interfaces – Gibt ein Array mit allen deklarierten Schnittstellen zurück

get_declared_classes – Gibt ein Array zurück, das aus den Namen definierter Klassen besteht

Diese Funktionen werden in der Praxis selten benötigt

foreach (get_declared_classes() as $class) {
    $r = new \ReflectionClass($class);
}
Nach dem Login kopieren

Klassen abrufen

Verwandt Funktionen

get_claimed_class – Der Name der späten statischen Bindungsklasse, gibt false zurück, wenn er außerhalb der Klasse verwendet wird

get_class – Gibt den Klassennamen des Objekts zurück

get_parent_class – Gibt den zurück Objekt Oder der übergeordnete Klassenname der Klasse

get_called_class ( void ) : array
get_class ([ object $object = NULL ] ) : string
get_parent_class ([ mixed $obj ] ) : string
Nach dem Login kopieren

Beispiel – Ausnahmeklasse abrufen, wenn eine Ausnahme ausgelöst wird

throw (new ModelNotFoundException)->setModel(get_called_class());
Nach dem Login kopieren

Klassenmitglied abrufen

Verwandte Funktionen:

get_class_methods – Gibt ein Array zurück, das aus den Methodennamen der Klasse besteht.

get_class_vars – Gibt ein Array zurück, das aus den Standardattributen der Klasse besteht.

get_object_vars – Gibt zurück ein assoziatives Array bestehend aus Objektattributen

Beispiel – Alle Accessor-Eigenschaften in einer Klasse abrufen

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",
// ]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der PHP-Funktionsbibliotheken und -Objekte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage