我试图在不使用任何框架的情况下在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 ++过多,我一直伪造功能字
答案 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中的方法不应该是静态的。