__ Özdevinimli_yükle () özdevinimli sınıfların üst sınıfları için denir?

3 Cevap php

main.php, autoload ilave edilir ve yeni bir nesne oluşturulur In:

function __autoload($class) {
    require_once($class . '.php');
}
...
$t = new Triangle($side1, $side2, $side3);

In Triangle.php,

class Triangle extends Shape {...}

Shape.php soyut bir sınıftır:

abstract class Shape {
    abstract protected function get_area();
    abstract protected function get_perimeter();
}

O __autoload işlev çağrıları Triangle.php görebilirsiniz, ama aynı zamanda Shape.php diyor?

3 Cevap

Hayır (değil exact aynı anda), ama evet (o yüklenir alacak ve her şeyi çalışır).

Aradığınızda new Triangle bu Üçgen henüz yüklü olmayan bir sınıf olduğunu göreceksiniz, bu yüzden __autoload() çağırır. Bu daha sonra require_once Triangle.php dosya olacak.

Triangle.php ayrıştırma, yüklü değil başka bir sınıf (Shape) var olduğunu görür böylece işlemi tekrarlar.

Kısacası, daha sen var ne daha yapmamız gereken bir şey yok, ama bu geçiş bir dizi yapar.

Bu, evet olmalıdır. Ben sadece ekleyerek doğrulamak sanırım bir

echo "loaded $class!\n";

Lütfen __ autoload işleyicisi deyim?

özdevinimli_yükle bir sınıf tanımı bulunamaz her zaman çalıştırılır.

Senin durumunda ilk Triangle için çağrılır, daha sonra ayrıştırıcı karşılaştığı Triangle.php içinde Shape başvuru ve sonra olacak özdevinimli_yükle Shape.php

<?php
function __autoload($class) {
    print "autoloading $class\n";
    require_once($class . '.php');
}

$t = new Triangle();

[~]> php test.php 
autoloading Triangle
autoloading Shape