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

Detaillierte Erläuterung der PHP-Funktionsbibliotheken und -Objekte

藏色散人
藏色散人nach vorne
2020-02-07 16:15:592523Durchsuche

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

Beispiel – Umfangreiche Klassenexistenzprüfungsfunktion

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

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

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';
    }
}

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

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

In tatsächlichen Situationen wird der Operator „instanceof“

$foo instanceof Foo; // true
$foo instanceof A; // true
$foo instanceof B; // true

häufiger zum Betrieb von

Verwandte Funktionen:

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

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

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);
}

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

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

throw (new ModelNotFoundException)->setModel(get_called_class());

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",
// ]

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen