使用__autoload加载类

时间:2013-12-14 16:33:41

标签: php class model autoload

我试图在不使用任何框架的情况下在Controller-Model-View约定中编写我的网站,但我遇到了__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 ++过多,我一直伪造功能

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

你的Model_Config是否包含多个静态方法或为什么使用“new Model_Config()”?

该错误消息和“私人”看起来像是要在您的媒体资源中直接创建一个对象。如果要将Model_Config对象添加到特定类的属性,则应使用依赖项注入。这里是你的构造函数中的例子:

<?php

class YourClass
{

    private $oConfig;

    public function __construct(Model_Config $oConfig)
    {
         $this->oConfig = $oConfig;
    }
}

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