(前言:我是PHP的新手,来自C#背景,我习惯于非常干净的代码。我目前正在我自己的Wordpress网站上工作,该网站有一个购买的主题。
我在WordPress主题中看到过这种类型的代码:
<a href="<?php echo esc_url( home_url( '/' ) ); ?>"><img src="<?php echo esc_url( $logo ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>" id="logo"/></a>
与重构相比,我发现这很难阅读:
<?php
echo '<a href="';
echo esc_url( home_url( '/' ) );
echo "><img src=";
echo esc_url( $logo );
echo " alt=";
echo esc_attr( get_bloginfo( 'name' ) );
echo '" id="logo"/></a>'
?>
但这是迄今为止最简单的:
<?php
get_anchor($url, $imgsource, $alt, $id);
?>
get_anchor是一个自定义函数,用于回显根据参数配置的定位点。
但我肯定不是第一个想到这一点的人。 是否有任何现有的库具有一组返回正确格式的 html 的函数,如本例所示?我错过了什么吗?
我编写了一个基于纯PHP输出返回HTML标签的函数:
function tag($name, $attrs, $content) {
$res = '';
$res .= '<' . $name;
foreach($attrs as $key => $val)
$res .= ' ' . $key . '="' . $val . '"';
$res .= isset($content) ? '>' . $content . '</'.$name.'>' : ' />';
return $res;
}
-
$name
是标签名称(例如a
) -
$attrs
是一个键、值数组,具有属性(例如array('href','http://google.com/')
) -
$content
是标签的内容/正文(其他元素或文本)
基本用法示例:
echo tag('a', array('href' => 'http://google.com/'),'Google');
具有多个子项的嵌套使用示例:
echo tag('ul',array(),
tag('li',array(),'one') .
tag('li',array(),'two') .
tag('li',array(),'three')
);
您正在寻找的是像 Smarty 这样的模板。它们是将信息显示为代码和视图完全分离的最干净方式。
然而Wordpress不使用它们,我不知道为什么,可能是因为大多数PHP程序员不习惯它。
大多数PHP框架都提供这样的库来通过参数化函数输出html,如果框架遵循MVC模式,则大多数都是视图层的一部分。
但是,如果您没有使用任何框架,那么您可以从此处使用这些库
PHP 梨软件包
特别是对于构建表单,请参阅
HTML_QuickForm2