使用__autoload加载类


loading class with __autoload

我试图在不使用任何框架的情况下使用控制器模型视图约定编写我的站点,但我在__autoload函数方面遇到了问题
这是我的source_folder/model/database.class.php文件:

<?php
function __autoload($sName) {
    $aName = explode('_',$sName);
    if($aName[0] == 'Model')
        include '/model/' . strtolower($aName[1]) . '.class.php';
    else if($aName[0] == 'View')
        include '/view/' . strtolower($aName[1]) . 'class.php';
    else if($aName[0] == 'Controller')
        include '/controller' . strtolower($aName[1]) . 'class.php';
}
/**
 * Description of database
 *
 * @author Lysy
 */
class Model_Database {
   private $oConfig = new Model_Config();
   $this->oConfig->getConfigArray('database');
}
?>

这是我的source_folder/model/config.class.php文件:

<?php
include_once '../config.php';
/**
 * Description of config
 *
 * @author Lysy
 */
class Model_Config {
    static function GetConfigArray($name) {
        return $config[$name];
    }
}
?>

行出现问题

private $oConfig = new Model_Config();

并且它说语法错误,意外的T_NEW
我不明白问题出在哪里,因为我使用的是Netbeans IDE,当我键入private $oConfig = new M时,程序会用Model_Config提示我
我很高兴阅读一些关于这个问题的建议和可能的解决方案,关于:)

编辑:我重写了Model_Config类,使其看起来像这样:

class Model_Database {
   private $oConfig;
   __construct() {
        $oConfig = new Model_Config();
    };
   $this->oConfig->getConfigArray('database');
}

但现在线路出现问题

__construct() {

Netbeans__construct()是意外的,站点上的错误保持不变,意外的T_NEW

EDIT2:哦,对不起,C++太多了,我一直在伪造函数单词

不能使用表达式为成员变量赋值。您必须在构造函数或方法内部执行此操作。

您的Model_Config是否包含比该静态方法更多的内容,或者为什么要使用"new Model_Coonfig()"?

这个错误消息和"private"看起来就像你想直接在你的属性中创建一个对象。如果要将Model_Config对象添加到特定类的属性中,则应使用依赖项注入。在您的构造函数中,例如:

<?php
class YourClass
{
    private $oConfig;
    public function __construct(Model_Config $oConfig)
    {
         $this->oConfig = $oConfig;
    }
}

一种更好的注入方式是使用接口作为类型提示。也许Model_Config中的方法不应该是静态的。