Παραπομπή Συναρτήσεων
PHP Manual

Class/Object συναρτήσεις

Εισαγωγή

Οι συναρτήσεις αυτές σας επιτρέπουν να ανακτήσετε πληροφορίες για τις κλάσεις και τα στιγμιότυπα τους. Μπορείτε να ανακτήσετε το όνομα της κλάσης στην οποία ανήκει ένα αντικείμενο, καθώς και τις μεταβλητές και τις μεθόδους του. Χρησιμοποιώντας αυτές τις συναρτήσεις, μπορείτε να μάθετε όχι μόνο την κλάση ενός αντικειμένου, αλλά και τις υπερκλάσεις του (από ποιά κλάση κληρονομεί το αντικείμενο).

Απαιτήσεις

Δεν χρειάζονται εξωτερικές βιβλιοθήκες για να γίνει build αυτή η επέκταση.

Εγκατάσταση

Δεν χρειάζεται εγκατάσταση για αυτές τις συναρτήσεις, είναι μέρος του πυρήνα της PHP.

Ρυθμίσεις κατά την εκτέλεση

Αυτή η επέκταση δεν έχει directives ρύθμισης ορισμένα στο php.ini.

Τύποι Πόρων

Αυτή η επέκταση δεν έχει resource τύπους ορισμένους.

Προκαθορισμένες Σταθερές

Αυτή η επέκταση δεν έχει σταθερές ορισμένες.

Παραδείγματα

Σε αυτό το παράδειγμα, πρώτα ορίζουμε μια κλάση-βάση και μετά μια κλάση κληρονόμο. Η κλάση-βάση περιγράφει ένα γενικό λαχανικό, αν είναι βρώσιμο ή όχι, και το χρώμα του. Η κλάση κληρονόμος Spinach προσθέτει μια μέθοδο για το μαγείρεμα και ακόμα μια που επιστρέφει αν είναι μαγειρεμένο.

Example#1 classes.inc

<?php

// κλάση-βάση με μεταβλητές και μεθόδους
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;
    }
    
// τέλος κλάσης Vegetable

// επέκταση κλάσης-βάσης
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;
    }
    
// τέλος κλάσης Spinach

?>

Ακολούθως δημιουργούμε δυο στιγμιότυπα από αυτές τις κλάσεις και τυπώνουμε πληροφορίες για αυτά, συμπεριλαμβανομένης της υπερκλάσης τους. Ορίζουμε επίσης μερικές βοηθητικές συναρτήσεις, κυρίως για να είναι καλαισθητικό το τύπωμα των μεταβλητών.

Example#2 test_script.php

<pre>
<?php

include "classes.inc";

// βοηθητικές συναρτήσεις

function print_vars($obj) {
    
$arr get_object_vars($obj);
    while (list(
$prop$val) = each($arr))
        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);

// και τις μεθόδους της κλάσης-κληρονόμου
echo "\nleafy: Methods\n";
print_methods($leafy);

echo 
"\nParentage:\n";
class_parentage("leafy""Spinach");
class_parentage("leafy""Vegetable");
?>
</pre>

Μια σημαντική παρατήρηση σχετικά με το πιο πάνω παράδειγμα είναι ότι το αντικείμενο $leafy είναι ένα στιγμιότυπο της κλάσης Spinach, η οποία είναι υποκλάση του Vegetable, συνεπώς το τελευταίο μέρος του script θα τυπώσει:

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

Table of Contents


Παραπομπή Συναρτήσεων
PHP Manual