3
我正在編寫一個MVC框架(出於學習和發現的目的而不是實際打算使用它),並且遇到了一個小問題。來自所需/包含文件的PHP中的變量變量
我有一個config.php
文件:
$route['default'] = 'home';
$db['host'] = 'localhost';
$db['name'] = 'db-name';
$db['user'] = 'user-name';
$db['pass'] = 'user-pass';
$enc_key = 'enc_key'
我通過一個靜態方法在我boot
類加載這些:
public static function getConfig($type) {
/**
* static getConfig method gets configuration data from the config file
*
* @param string $type - variable to return from the config file.
* @return string|bool|array - the specified element from the config file, or FALSE on failure
*/
if (require_once \BASE . 'config.php') {
if (isset(${$type})) {
return ${$type};
} else {
throw new \Exception("Variable '{$type}' is undefined in " . \BASE . "config.php");
return FALSE;
}
} else {
throw new \Exception("Can not load config file at: " . \BASE . 'config.php');
return FALSE;
}
}
,然後加載像這樣的路線:
public function routeURI($uri) {
...
$route = $this::getConfig('route');
...
}
哪一個例外:
"Variable 'route' is undefined in skeleton/config.php"
現在,它工作正常,如果我讓config.php
文件像這樣
$config['route']['default'] = 'home'
...
並更改兩條線的方法,像這樣:
if (isset($config[$type])) {
return $config[$type];
我一直在使用$$type
代替也嘗試${$type}
與同樣的問題。
有什麼我可以忽略的嗎?
我糾正了,我把它改爲'require',它工作,對不起! –
好吧馬克這個人回答正確!另外,添加不需要該函數中的文件。要求在函數之外,並將配置作爲參數傳遞。 – Galen
我最初需要index.php頁面中的文件,我不知道爲什麼我還是不這樣做,我想我只是在嘗試新事物! –