在类函数中使用 html 有什么问题吗?我在 DOM 中调用它,因此不需要返回字符串。
public function the_contact_table(){
?>
<div>
some html here
</div>
<?php
}
另外,当我确实需要字符串时,我会使用此方法吗?有没有更好的方法或者这是相对标准的?
public function get_single(){
ob_start();?>
<div class='staff-member single'>
<div class='col left'>
<div class='thumbnail'>
thumbnail
</div>
<?php $this->the_contact_table(); ?>
</div>
<div class='col right'>
</div>
</div>
<?php
$content = ob_get_contents();
ob_end_clean();
return $content;
}
UPDATE
我应该解释一下我为什么这样做。我正在制作一个 Wordpress 插件,想要控制帖子类型输出。所以我使用如下所示的过滤器
public function filter_single($content){
global $post;
if ($post->post_type == 'staff-member') {
$sm = new JM_Staff_Member($post);
$content = $sm->get_single();
}
return $content;
}
所以如你所见,我must返回一个字符串到 WordPress 核心
你应该使用HEREDOC http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc如果您想将长字符串存储到变量中,而不是输出缓冲。它看起来像这样:
$content = <<<EOD
content here
EOD;
EOD
可以是任何东西,但请注意两件重要的事情:
- 它前面不能有任何空格,并且必须在自己的行上
- 它不应该是可以在您的内容中找到的字符串
如果您使用 PHP >= 5.3,那么您应该使用 NOWDOC,它不会解析文档内的变量(除非您需要它)。与NOWDOC 语法的唯一不同之处在于哨兵用引号引起来:
$content = <<<'EOD'
content here
EOD;
我远离输出缓冲的原因是它阻止服务器对发送到客户端的数据进行分块。这意味着请求看起来会更慢,因为内容不是逐步发送到客户端并显示,而是被迫一次性发送。输出缓冲是针对不小心运行的情况的一种解决方案echo
数据,而不是返回它或具有特定需求的某些应用程序的工具。我还想象,如果您使用输出缓冲(因为它涉及函数调用)而不是将字符串HEREDOCing到变量中或包含视图,那么执行时间会受到影响。
现在要回答是否合适的问题,我想说的是,在 MVC 应用程序中,所有 HTML 和其他内容都应包含在其自己的视图中。然后控制器可以调用视图来显示自身,而不必担心了解显示视图所涉及的代码。您仍然可以将信息(如标题、作者、标签数组等)传递给视图,但这里的目标是将内容与逻辑分离。
也就是说,Wordpress 模板和代码一开始看起来相当草率,而且如果根本没有实现 MVC,那么如果为此创建视图需要太多工作,我会说这种草率符合 WP 的风格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)