PHP 混合 html 和代码



(前言:我是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

最新更新