Php 诗篇:如何处理专用视图文件?
我的设置包括一个包含类的Php 诗篇:如何处理专用视图文件?,php,testing,model-view-controller,types,psalm-php,Php,Testing,Model View Controller,Types,Psalm Php,我的设置包括一个包含类的lib文件夹和一个包含PHP文件的view文件夹,它们生成输出。视图在视图类中导入,类似于以下内容: 类视图{ 公共函数呈现(字符串$basename,数组$params):字符串{ 提取($params,EXTR_前缀无效,'v'); ob_start(); 包括sprintf('%s/views/%s.php',dirname(_DIR__),$basename); $out=ob_get_contents(); ob_end_clean(); 退回$out; } }
lib
文件夹和一个包含PHP文件的view
文件夹,它们生成输出。视图在视图
类中导入,类似于以下内容:
类视图{
公共函数呈现(字符串$basename,数组$params):字符串{
提取($params,EXTR_前缀无效,'v');
ob_start();
包括sprintf('%s/views/%s.php',dirname(_DIR__),$basename);
$out=ob_get_contents();
ob_end_clean();
退回$out;
}
}
在这种情况下,我对《诗篇》基本上有两个问题:
View::render
,它报告一个unsolvableClude
。我甚至可以用类似的方式键入$basename
@param "view1"|"view2"|"about" $basename
没有效果。无法解决的问题仍然存在
extract()
将$params
的内容放入本地范围,其中包括视图文件。这让我有了
<?=escape($foo)?>
我的视图文件中的“标记”带有$params==['foo'=>'bar']
。然而,诗篇并没有跟上这一点,并报告了许多未定义的全局变量问题
@variablesfrom ClassName::method
,并使它们在模板文件中可用。或者只是该方法中的$this
变量的属性,不确定。诗篇中也提到了这一点
或者,您可以将模板包装成一个最小的方法/函数,因为从技术上讲,视图只是一个接受一组变量并返回字符串的函数:
这样,任何分析代码的工具(包括Psalm,但不限于)都可以理解它。从技术上讲,您的视图只是一个接受一组变量并返回字符串的方法。那么,为什么不把它变成像这里这样的方法呢?谢谢你的想法!是的,从技术上讲,这对我来说是可行的。我有点犹豫,因为它看起来像很多OOP样板,而我想要的只是一点好的老式标签汤PHP和
include_once“partial/component.PHP”代码>以某种可控的方式。我想,诗篇是一个错误的工具来检查意见呢?不过,检查代码中的OOP部分,它就像一个符咒。但也许我会尝试使用skrewdriver来处理钉子…再仔细想想,也许我可以用简单的函数最小化样板文件。。。类似于functionpart1(字符串$foo,int$bar){?>html……html