簡體   English   中英

PHP spl_autoload_register繼承

[英]PHP spl_autoload_register inheritance

我有一個名為house.php的頁面,以及house.class.php中的一個類。 當我在house.php中創建該類的實例時,它將起作用。 現在,我要制作一個chair.php文件和一個在House.class.php中擴展House的類Chair。 我該在哪里上課? spl_autoload_register找不到我的課程,因為其名稱與文件不相同。 如何改善AutoloadClass功能? 我應該創建一個chair.class.php並在house.class.php中使用require嗎?

spl_autoload_register(null, false);
spl_autoload_extensions('.php, .class.php');
function AutoloadClass($class){
    $filename = $class.'.class.php';

    if (!file_exists($filename))
        {
            return false;
        }
        include $filename;
    }

spl_autoload_register('AutoloadClass');

謝謝

由於您正在調用spl_autoload_extensions ,因此無需手動添加.class.php 此外,您可以嘗試spl_autoload_register帶任何參數調用spl_autoload_register 然后,它可以與http://de2.php.net/manual/zh-CN/function.spl-autoload.php一起使用 ,它應該可以立即使用:

set_include_path(__DIR__);
spl_autoload_extensions('.php,.class.php');
spl_autoload_register();

spl_autoload將進行擴展檢查。 否則,您不需要spl_autoload_extensions而必須自己檢查所有擴展名。

您可能面臨的另一個問題是您的類名是大寫而文件名是小寫。 我會使用PSR-0標准,以便類名和文件名匹配。 因此,請勿添加.class.php

House -> House.php
Chair -> Chair.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM