Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Variablen und Typerweiterungen wie Klassen und Objekte

PHP-Variablen und Typerweiterungen wie Klassen und Objekte

伊谢尔伦
伊谢尔伦Original
2016-11-21 17:01:491039Durchsuche

1. Übersicht und Installation

Mit diesen Funktionen können Sie Informationen über Klassen und Objektinstanzen abrufen. Sie können den Klassennamen, zu dem das Objekt gehört, sowie seine Mitgliedseigenschaften und -methoden abrufen. Mithilfe dieser Funktionen können Sie nicht nur die Beziehung zwischen Objekten und Klassen ermitteln, sondern auch deren Vererbungsbeziehung (z. B. von welcher Klasse eine Objektklasse erbt).

Eine detaillierte Beschreibung, wie Objekte und Klassen in PHP implementiert und verwendet werden, finden Sie in den objektorientierten Kapiteln.

Für die Nutzung dieser Funktionen ist keine Installation erforderlich, sie sind Teil des PHP-Kerns.

2. Vollständige Liste der Klassen- und Objektfunktionen

__autoload – Versuchen Sie, eine undefinierte Klasse zu laden

call_user_method_array – Rufen Sie eine Benutzermethode auf, während Sie ein Parameterarray übergeben (veraltet)

call_user_method – Rufen Sie eine Benutzermethode für ein bestimmtes Objekt auf (veraltet)

class_alias – Erstellen Sie einen Alias ​​für eine Klasse

class_exists – Überprüfen Sie, ob die Klasse definiert ist

get_claimed_class – Der Name der Klasse für die späte statische Bindung („Late Static Binding“)

get_class_methods – Gibt ein Array bestehend aus den Methodennamen der Klasse zurück

get_class_vars – Gibt ein Array bestehend aus zurück die Standardattribute der Klasse

get_class – Gibt den Klassennamen des Objekts zurück

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

get_declared_interfaces – Gibt ein Array zurück enthält alle deklarierten Schnittstellen

get_declared_traits – Gibt ein Array aller definierten Merkmale zurück

get_object_vars – Gibt ein assoziatives Array zurück, das aus Objektattributen besteht

get_parent_class – Gibt den Namen der übergeordneten Klasse eines zurück Objekt oder Klasse

interface_exists – Überprüfen Sie, ob die Schnittstelle definiert wurde

is_a – Gibt TRUE zurück, wenn das Objekt zu dieser Klasse gehört oder die Klasse die übergeordnete Klasse dieses Objekts ist

is_subclass_of – Wenn dieses Objekt ein untergeordnetes Objekt dieser Klasse ist, gibt es TRUE zurück

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

property_exists – Überprüfen Sie, ob das Objekt oder die Klasse die Eigenschaft hat

trait_exists – Überprüfen Sie, ob das angegebene Merkmal vorhanden ist

3 Verwendungsbeispiel

In diesem Beispiel definieren wir zunächst eine Basisklasse und eine Erweiterung der Klasse. Diese Basisklasse beschreibt ein gewöhnliches Gemüse hinsichtlich seiner Essbarkeit und seiner Farbe. Die Unterklasse Spinat fügt eine Methode zum Kochen und eine weitere Methode zum Überprüfen, ob es gekocht ist, hinzu.

Beispiel Nr. 1 „classes.inc“

<?php
    // base class with member properties and methods
    class Vegetable {
        var $edible;
        var $color;
        function Vegetable($edible, $color="green") 
        {
            $this->edible = $edible;
            $this->color = $color;
        }
        function is_edible() 
        {
            return $this->edible;
        }
        function what_color() 
        {
             return $this->color;
        }
   } // end of class Vegetable
   // extends the base class
   class Spinach extends Vegetable {
       var $cooked = false;
       function Spinach() 
       {
           $this->Vegetable(true, "green");
       }
       function cook_it() 
       {
           $this->cooked = true;
       }
       function is_cooked() 
       {
           return $this->cooked;
       }
   } // end of class Spinach
?>

Als nächstes instanziieren wir zwei Objekte aus diesen Klassen und drucken ihre Informationen aus, einschließlich der Vererbungsbeziehung ihrer Klassen. Gleichzeitig haben wir auch einige Hilfsfunktionen definiert, hauptsächlich um diese Variablen schön auszudrucken.

Beispiel #2 test_script.php

<?php
    include "classes.inc";
    // 实用函数
    function print_vars($obj)
    {
        foreach (get_object_vars($obj) as $prop => $val) {
            echo "\t$prop = $val\n";
        }
    }
    function print_methods($obj)
    {
        $arr = get_class_methods(get_class($obj));
        foreach ($arr as $method) {
            echo "\tfunction $method()\n";
        }
    }
    function class_parentage($obj, $class)
    {
        if (is_subclass_of($GLOBALS[$obj], $class)) {
            echo "Object $obj belongs to class " . get_class($$obj);
            echo " a subclass of $class\n";
        } else {
            echo "Object $obj does not belong to a subclass of $class\n";
        }
    }
    // 实例化 2 对象
    $veggie = new Vegetable(true, "blue");
    $leafy = new Spinach();
    // 打印这些对象的信息
    echo "veggie: CLASS " . get_class($veggie) . "\n";
    echo "leafy: CLASS " . get_class($leafy);
    echo ", PARENT " . get_parent_class($leafy) . "\n";
    // 显示蔬菜的属性
    echo "\nveggie: Properties\n";
    print_vars($veggie);
    // and leafy methods
    echo "\nleafy: Methods\n";
    print_methods($leafy);
    echo "\nParentage:\n";
    class_parentage("leafy", "Spinach");
    class_parentage("leafy", "Vegetable");
?>

Es ist wichtig zu beachten, dass im obigen Beispiel das Objekt $leafy eine Instanz von Spinach (einer Unterklasse von Gemüse) ist und Das andere Skript Der letzte Teil gibt die folgenden Informationen aus:

[...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable


Stellungnahme:
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
Vorheriger Artikel:PHP-BeobachtermusterNächster Artikel:PHP-Beobachtermuster