PHP混合HTML和代码

时间:2013-10-20 18:09:06

标签: php wordpress

(序言:我是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,如本例所示?有什么我想念的吗?

3 个答案:

答案 0 :(得分:1)

我编写了一个基于纯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')
    );

答案 1 :(得分:0)

我相信你要找的是像Smarty这样的模板。它们是显示信息的最干净方式,因为代码和视图完全分开。

然而Wordpress不使用它们,我不知道为什么,可能是因为大多数PHP程序员都不习惯它。

答案 2 :(得分:0)

大多数PHP框架提供了这样的库来通过参数化函数输出html,如果框架遵循MVC模式,它们中的大多数都是视图层的一部分。

但如果你没有使用任何框架,那么你可以从这里使用这些库

PHP Pear Packages

特别是建筑形式参见

HTML_QuickForm2