【发布时间】:2015-01-29 16:21:30
【问题描述】:
我有一个接受 2 个参数的视图方法,其中一个是该视图的数据。我将它设置为 $data 作为方法参数。
我使用的类如下:
view->make('testview', $movies);
在这种情况下,$movies 是一个对象,但它可能只是文本。
class View {
public function make($view, $data) {
require_once("../app/views/$view" . ".php");
var_dump($data);
}
}
问题是,我不想在我的所有观点中使用$data->whatever(),因为这没有语义并且难以审查。我希望我的视图数据与我传递给它的变量具有相同的名称。在这种情况下,我将变量 $movies 传递给它,所以我希望能够在我的视图中使用 $movies->whatever()。
本质上,我希望传递给方法的变量保持相同的变量名称,并且可以像在函数中那样使用。
我该怎么做?
【问题讨论】:
-
使用公共函数make($view, $movies)?
-
你能详细说明一下吗?正如@Erik 所说,只需将
$data重命名为$movies似乎就是这样。 -
... 除了它可能不是
$movies在某些视图中它可能是$badgers,因此视图文件中的变量变量名......我自己并没有真正明白这一点,这只会让生活变得困难。只需在所有视图文件中使用$data并完成它,至少您知道在所有情况下将调用什么变量并且不用担心语义。如果变量名称的语义让您感到困扰,只需在视图顶部重新映射它:$movies = $data;丑陋但它会起作用。 -
就是这样。当我为它提供除 $movies 之外的其他变量时,我希望它具有可重用性。我宁愿让变量是动态的。这并没有让生活变得更难,因为我必须从变量开始。