natepage/easy-html-element

在PHP中创建简单或复杂HTML元素的简单方法。

v1.2.0 2017-01-30 09:22 UTC

This package is auto-updated.

Last update: 2024-08-29 05:04:28 UTC


README

Build Status SensioLabs Insight Quality Score

在PHP中创建简单或复杂HTML元素的简单方法。

EasyHtmlElement 是一个开源软件库,允许您定义HTML元素映射,并在HTML代码中简单使用它们。您可以定义简单的元素,如链接、按钮、列表、图片或使用自定义类型。但这个库的强大之处在于可以定义具有属性、父元素、子元素或扩展其他元素属性的复杂HTML结构。在您的元素映射完成后,您只需使用一个PHP方法即可完成它!

##安装 ####Composer 从 https://getcomposer.org.cn/ 查找有关Composer的所有信息

运行以下命令

$ composer require natepage/easy-html-element

####仓库 您可以直接克隆仓库,但您需要手动安装依赖项。

##使用 您在PHP中使用过数组吗?是的?太棒了!使用EasyHtmlElement,只需创建一个简单的PHP数组,其余的我们来处理!我们将这个数组称为 map ,在接下来的所有示例中。

因此,map 是一个简单的键/值数组,您将在其中定义HTML元素,如下所示

  • 键(字符串):您将在代码中使用的元素名称
  • 值(数组):所有元素信息

####简单示例

$map = array(
    'myDiv' => array(
        'type' => 'div',
        'text' => 'Simple Div Example'
    )
);

$htmlElement = new NatePage\EasyHtmlElement\HtmlElement();
$div = $htmlElement->load('myDiv');

echo $div; 

/**
 * <div>
 *      Simple Div Example
 * </div>
 */

在上面的示例中,我们只显示了一个简单的div,是的,我同意您真的不需要库来做这件事,但这是为了展示逻辑,如果您想看到EasyHtmlElement的真实力量,请继续阅读!

您可以看到,您不需要调用特定的方法来渲染元素,我们使用魔法方法 __toString() 来使您的生活更轻松! :)

####更复杂的示例(Bootstrap面板)

$map = array(
    //Base div
    'div' => array(
        'type' => 'div'
    ),
    //Base panel structure
    'panel' => array(
        'extends' => array('div'),
        'attr' => array('class' => 'panel'),
        'children' => array(
            'panelHeading',
            'panelBody',
            'panelFooter'
        )
    ),
    //Panel heading
    'panelHeading' => array(
        'extends' => array('div'),
        'attr' => array('class' => 'panel-heading'),
        'children' => array(
            array(
                'name' => 'panelHeadingTitle',
                'type' => 'h3',
                'attr' => array('class' => 'panel-title'),
                'text' => '%panel_title%'
            )
        )
    ),
    //Panel body
    'panelBody' => array(
        'extends' => array('div'),
        'attr' => array('class' => 'panel-body'),
        'text' => '%panel_body%'
    ),
    //Panel footer
    'panelFooter' => array(
        'extends' => array('div'),
        'attr' => array('class' => 'panel-footer'),
        'text' => '%panel_footer%'
    ),
    //Primary panel structure
    'panelPrimary' => array(
        'extends' => array('panel'),
        'attr' => array('class' => 'panel-primary')
    )
);

$htmlElement = new \NatePage\EasyHtmlElement\HtmlElement($map);
$panelPrimary = $htmlElement->load('panelPrimary', null, array(), array(
    'panel_title' => 'My Panel Title',
    'panel_body' => 'My Panel Body',
    'panel_footer' => 'My Panel Footer'
));

echo $panelPrimary;

/**
 * <div class="panel-primary panel">
 *      <div class="panel-heading">
 *          <h3 class="panel-title">My Panel Title</h3>
 *      </div>
 *      <div class="panel-body">
 *          My Panel Body
 *      </div>
 *      <div class="panel-footer">
 *          My Panel Footer
 *      </div>
 * </div>
 */

这里我们有

  • 所有面板组件都扩展了 Base div 元素以获取 div 类型
  • Base面板结构定义 children 以创建其内容
  • 所有元素都使用 attr 定义自己的属性
  • 面板标题直接在其子数组中定义一个动态子元素
  • 主要面板结构扩展所有Base面板结构并添加一个CSS类
  • 一些使用 %parameter% 语法定义的参数,允许您定义动态内容

仅在一个方法中创建复杂和动态的HTML结构,这正是EasyHtmlElement向您承诺的!

##集成 EasyHtmlElement 为以下提供了集成

  • Symfony
  • Twig
  • Laravel

更多信息请参阅 集成

##文档 您想了解更多关于EasyHtmlElement的功能吗?

阅读 文档

##依赖关系

我们强烈建议您使用 symfony/yaml 使您的映射构建更容易。

##自定义 如果您需要自定义代码逻辑,EasyHtmlElement 一次又一次地使它更容易,通过一些接口。有关详细信息,请参阅 文档

##贡献 如果您在代码中找到错误,文档中的错别字,如果您有改进的想法,或者只是想打个招呼! :)

EasyHtmlElement 版本管理遵循语义化版本控制指南,因此发布版本将按照以下格式进行编号:

MAJOR.MINOR.PATCH

有关 SemVer 的更多信息,请访问 http://semver.org