Php 一些经常需要的数据的静态上下文?最佳实践?
我已经用PHP编写了一些Web框架。有人建议我不要在静态环境中做任何事情。但我对此有一些疑问 想象一下下面的类:Php 一些经常需要的数据的静态上下文?最佳实践?,php,oop,static,coding-style,Php,Oop,Static,Coding Style,我已经用PHP编写了一些Web框架。有人建议我不要在静态环境中做任何事情。但我对此有一些疑问 想象一下下面的类: class Image extends HtmlControl { public $src; public $alt; function getDetailPath() { return 'Common/Image'; } } 没什么特别的。它是一个用Html呈现图像的类。我的基类当前有以下实现: abstract class
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;
}
}
也没什么特别的。它基本上将端点类型(类似于前端或后端)解析为相应的模板文件,并提供render方法以获得输出
问题是,每次html控件的每个部分都需要提供$viewInformation
参数
$img = new Image($this->_info);
在我看来,像这样的事情会更好:
$img = new Image();
因此,我必须在静态上下文中保存状态,即应该使用哪个端点。类似这样的内容(请注意Request::getEndpoint()
部分):
我的问题:在这种情况下,在静态上下文中使用端点可以吗?如果没有,我当前的实现是否可以改进?为什么不在执行
->render()时传递上下文?另外,我认为如果你要深入了解这种细节,也许你更愿意使用DOMDocument
:)静态内容的坏处本质上是隐藏的依赖关系;其次是与测试相关的问题。谢谢@Jack,这是一个很好的观点。我会改变这个。你给了我一个很小但很好的回答。这对我真的很有帮助。因为我在“$container”中加载“$img”,所以我的$container可以处理这个问题。难道不是因为树木的缘故,森林才消失了吗:)
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;
}
}