我试图在没有使用任何框架的情况下用约定编写我的站点,但是我对__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,当我输入private $oConfig = new M时,程序给了我一个关于private $oConfig = new M的提示
我很乐意阅读一些关于这个问题的建议和可能的解决方案,例如:)
Model_Config编辑:--我重新编写了类,如下所示:
class Model_Database {
private $oConfig;
__construct() {
$oConfig = new Model_Config();
};
$this->oConfig->getConfigArray('database');
}但现在出现了一个问题
__construct() {Netbeans说__construct()是意外的,站点上的错误保持不变,意外的T_NEW
EDIT2:噢,对不起,C++太多了,我老是忘了函数字
发布于 2013-12-14 16:52:06
您的Model_Config包含的不仅仅是静态方法,还是为什么要使用“newModel_Config()”?
该错误消息和“私有”看起来像是要直接在属性中创建一个对象。如果要将Model_Config对象添加到特定类的属性中,则应使用依赖项注入。这里是您的构造函数中的特例:
<?php
class YourClass
{
private $oConfig;
public function __construct(Model_Config $oConfig)
{
$this->oConfig = $oConfig;
}
}一种更好的注入方式是使用接口作为类型提示。也许您的Model_Config中的方法不应该是静态的。
https://stackoverflow.com/questions/20585586
复制相似问题