首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用__autoload加载类

用__autoload加载类
EN

Stack Overflow用户
提问于 2013-12-14 16:33:41
回答 1查看 68关注 0票数 0

我试图在没有使用任何框架的情况下用约定编写我的站点,但是我对__autoload函数有一个问题。

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

代码语言:javascript
复制
<?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文件:

代码语言:javascript
复制
<?php
include_once '../config.php';

/**
 * Description of config
 *
 * @author Lysy
 */
class Model_Config {

    static function GetConfigArray($name) {
        return $config[$name];
    }
}

?>

这个问题出现在队列中

代码语言:javascript
复制
private $oConfig = new Model_Config();

上面写着语法错误,意外的T_NEW

我不明白问题出在哪里,因为我使用的是Netbeans,当我输入private $oConfig = new M时,程序给了我一个关于private $oConfig = new M的提示

我很乐意阅读一些关于这个问题的建议和可能的解决方案,例如:)

Model_Config编辑:--我重新编写了类,如下所示:

代码语言:javascript
复制
class Model_Database {

   private $oConfig;

   __construct() {
        $oConfig = new Model_Config();
    };

   $this->oConfig->getConfigArray('database');

}

但现在出现了一个问题

代码语言:javascript
复制
__construct() {

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

EDIT2:噢,对不起,C++太多了,我老是忘了函数字

EN

回答 1

Stack Overflow用户

发布于 2013-12-14 16:52:06

您的Model_Config包含的不仅仅是静态方法,还是为什么要使用“newModel_Config()”?

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

代码语言:javascript
复制
<?php

class YourClass
{

    private $oConfig;

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20585586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档