我用PHP编写了一些Web框架。我被建议在静态上下文中什么都不做。但我对此有一些疑问。
想象一下以下的课程:
class Image extends HtmlControl {
public $src;
public $alt;
function getDetailPath()
{
return 'Common/Image';
}
}
没什么特别的。它是一个用Html渲染图像的类。我的基类有以下实施:
abstract class HtmlControl {
private $template;
abstract function getDetailPath();
public function __construct(ViewInformation $viewInformation) {
$this->template = 'foo/bar/' . $viewInformation->getEndpoint() . '/' . $this->getDetailPath() . '.php';
}
public function render() {
$output = '';
//Load template end fill $output
return $output;
}
}
也没什么特别的。它基本上将端点类型(类似前端或后端)解析为相应的模板文件,并提供方法渲染以获取输出。
问题是,我每次都需要为html控件的每个部分提供$viewInformation
参数。
$img = new Image($this->_info);
在我看来,这样的事情会更好:
$img = new Image();
所以我必须在静态Context中保存应该使用Endpoint的State。这样的事情(注意Request::getEndpoint()
部分):
abstract class HtmlControl {
private $template;
abstract function getDetailPath();
public function render() {
$template = 'foo/bar/' . Request::getEndpoint() . '/' . $this->getDetailPath() . '.php';
$output = '';
//Load template end fill $output
return $output;
}
}
我的问题:在这种情况下,将端点置于静态上下文中是否正常?如果没有,我当前的实施能否得到改善?