1

我有一个名为house.php 的页面和house.class.php 中的一个类。当我在 house.php 中创建该类的实例时,它可以工作。现在我想制作一个chair.php 文件和一个在house.class.php 中扩展House 的类椅子。我应该把那个课放在哪里?spl_autoload_register 找不到我的类,因为它的名称与文件不同。如何改进功能 AutoloadClass ?我应该创建一个chair.class.php 并使用house.class.php 的要求吗?

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

谢谢

4

1 回答 1

1

由于您正在调用,因此spl_autoload_extensions您无需手动添加.class.php. 此外,您可以尝试spl_autoload_register不带参数调用。然后它与http://de2.php.net/manual/en/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
于 2013-07-21T12:39:23.280 回答