将数组键和值转换为单个变量



我知道您可以使用 extract(( 来实现这一点,但我的情况如下:

我正在为个人项目构建一个非常小的基本 MVC 框架,我的控制器中有一个:

public function index(){
$data = [
'title' => 'Welcome'
];
$this->view('pages/index', $data);
}

如您所见,这会将数据数组传递到视图中,您可以像以下方式回显它:

echo $data['title'];

但我想回应它,就像我知道 extract(( 可以做到这一点echo $title;但这意味着我必须手动将extract($data);放在每个页面的顶部,这不是世界末日,但我只是好奇是否有办法可以自动完成?我试图通过将提取放在视图功能中使用提取,但这不起作用。我还尝试通过将提取放在索引中required_once的头文件中来使用提取.php(从而使头文件成为始终需要的静态标头(,但两者都不起作用,因此任何建议都会很棒。

以下是根据请求的视图函数的代码:

public function view($view, $data = []){
if(file_exists('../../views/'.$view.'.php')){
require_once '../../views/'.$view.'.php';
} else {
die('View does not exist');
}
}

很简单,使用紧凑和提取功能

索引方法


public function index(){

$title='Welcome';

$this->view('pages/index', compact('title'));
}

威尤法


public function view($view, $data = []){
extract($data);
if(file_exists('../../views/'.$view.'.php')){
require_once '../../views/'.$view.'.php';
} else {
die('View does not exist');
}
}

在 html 中


<h1> hello <?php echo $title; ?></h1>

这是我出错的地方,我之前将提取放在视图方法中,但它不起作用。

然而,这里的建议是把它放在视图函数中,我现在明白我把提取函数放在require_once '../../views/'.$view.'.php';之后,我只是把提取放在那行代码之前,它现在可以工作了!

最新更新