sebastopolys/ginsenghtml

PHP 的 HTML 构建引擎

1.1.1 2024-07-09 01:09 UTC

This package is auto-updated.

Last update: 2024-09-16 01:19:28 UTC


README

提供 PHP 函数,您可以在代码中使用这些函数,以更简单、有效和有组织的方式构建大型且复杂的 HTML 结构。

安装

  • 使用以下终端命令使用 composer 进行安装。

composer require sebastopolys/ginsenghtml

  • 手动安装

ginsenghtml.php 文件保存在您的 PHP 应用程序中的某个位置。

使用

安装后,在类的构造函数中实例化 ginsenghtml

<?php
namespace MyNamespace;

use GinsengHtml\ginsenghtml;

class myclass
{
    public function __construct(){
        new ginsenghtml();
    }
}

注意

ginsenghtml() 是一个静态类,因此只需在第一个加载的模板文件中实例化一次。

由于函数用于构建 HTML 元素,因此需要调用 HTML 函数。

<?php
namespace MyNamespace;

use GinsengHtml\ginsenghtml;
use function GinsengHtml\{p,h1,h2,span,a};

在每个模板文件中添加必要的 HTML 函数。

如果您将 ginsenghtml 类的命名空间更改为与您的项目命名空间匹配,则不需要添加 use function 声明。

之后,HTML 函数将在您的类的后续方法中可用

<?php
namespace MyNamespace;
use GinsengHtml\ginsenghtml;
use function GinsengHtml\{h2,div};

class MyTemplateFileClass
{
    public function print_some_html(){

        return div(['id'=>'head_div','style'=>'background-color:yellow;','content'=>
            h2('CONTENT HERE!')]);
    }
}

HTML 函数

函数名称引用要在 HTML 函数输出的 HTML 标记上使用的 HTML 标签。例如

p( 'A paragraph' );

将输出以下 HTML

<p>A paragraph<p>

使用 HTML 函数

在上面的示例中,通过传递一个字符串到函数中构建了一个段落

您还可以向函数传递一个数组并添加 HTML 元素的属性

$array = [
        'id'=>'12',
        'class'=>'theclass class1'
        ];
                            
print_r( span( $array ) );

这将打印出

<span id="12" class="theclass class1">

其他函数: close()

注意,在上面的示例中,HTML 内部没有内容,也没有关闭 HTML 标签(</span>

提供额外的 close() 函数是为了对 HTML 元素的关闭和打开有更多的控制

使用此函数关闭任何打开的 HTML 标签

close( 'p' );

这将输出一个自闭合的段落元素

print_r( 
    p( $array )
    . 'A paragraph'
    . close( 'p') );

结果

<p id="12" class="theclass class1">
A paragraph
</p>

其他函数: content()

content() 函数获取在给定的数组下引用的 'content' 索引的内容值。然后它使用此值在 HTML 元素中插入它

此函数接受一个非关联数组,由一个或多个关联数组组成

当调用内容函数时,它将包含内容并使用相应的关闭标签关闭 HTML 元素

内容函数的用法;

$array2 = [
            [
            'id'=>'the_id',
            'tag'=>'p'
            'content'=>'The paragraph'
            ]
        ];
print_r( content( $array2 ) );

将输出

<p id="the_id">The paragraph</p>

注意

当在模板文件上使用 content() 函数时,'content' 和 'tag' 索引是必需的

打开和关闭的 HTML 元素

在某些情况下,HTML 函数可以返回自闭合 HTML 标签或不返回

不带关闭标签
  • 当使用不包含 'content' 索引的数组时,任何 HTML 函数
div(['id'=>'div_id']);
  • 如果传递了一个布尔值给函数
div( FALSE );
带关闭标签
  • 当传递一个字符串给任何函数,而不是数组时
label( 'A label string' );
  • 如果传递给函数的参数数组包含 'content' 索引
$array3 = [
            'class'=>'label',
            'content'=>'The content here'
        ];
label( $array3 );
  • 如果传递了一个布尔值
div( TRUE );

请注意,如果任何 HTML 元素没有关闭标签打印出来,浏览器将自动将其添加到 <body> 的末尾

使用单个 HTML 函数打印多个元素

可以使用单个 HTML 函数输出多个 HTML 标签。

为了实现这一点,传递给函数的数组必须是无索引的

array(3,5,7,10);

因此,您可以构建数组如下

$array4 = [
            'id'=>['id3','id5','id7','id10'],
            'class'=>'theclass',    
            'content'=>[
                        'The content of the 3',
                        'Text of content 5',
                        'Another text 7',
                        'Some more content 10'                
                    ],            
            'custom'=>[3,5,7,10]
        ];

将此数组传递给函数将打印出数组上表示的元素数量,即第一个数组的计数。

在上面的示例数组中,这将是 "id" 值的计数,即 4

print_r( div( $array4 ) );

结果


        <div id="id3" class="theclass" custom="3">The content of the 3</div>
        <div id="id5" class="theclass" custom="5">Text of content 5<div>
        <div id="id7" class="theclass" custom="7">Another text 7</div>
        <div id="id10" class="theclass" custom="10">Some more content 10</div>

支持的 HTML 标签(函数)

请随意编辑 ginsenghtml.php 文件并添加任何缺失的 HTML 标签。

键和概念

函数和数组

解析器的关键在于理解您可以通过使用函数在 PHP 模板文件中构建 HTML 结构,或者构建由控制器提供的函数的数据数组。

例如。

$array5 = [
            'id'=>'dataid',
            'class'=>'theclass'
            ];
$args = [
            'class'=>'par'
        ];
    
div( $array5 )
    . div( $args )
        . p( FALSE )
            . 'text here'
        . close('p')
    . close('div')
. close('div');

$array6 = [
            'id'=>'dataid',
            'class'=>'theclass',
            'content'=>[
                        [
                        'tag'=>'div',
                        'class'=>'par',
                        'content'=>[
                                [
                                    'tag'=>'p',
                                    'content'=>'text here'
                                 ]
                                ]
                         ]
                        ]
            ];
    
div( $array6 );

都将输出相同的 HTML

<div id="dataid" class="theclass">
    <div class="par">
        <p>text here</p>
    </div>
</div>

嵌套函数

可以在函数内部嵌套函数。

div( div( p('A nested string' ) ) );

将输出

<div>
    <div>
        <p>
            A nested string
        </p>
    </div>
</div>

嵌套参数数组

需要同时提供 'tag' 和 'content' 索引,以便执行 content() 函数的递归。

在您的数组中使用 'tag' 和 'content' 索引来创建和嵌套 HTML 元素。

$array6;

传递给函数的参数数组

您可以动态构建传递给函数的数组,但请注意,这可能会损害页面加载速度。尽量使参数数组尽可能小。

变更日志

  • 1.0.0
  • 1.1.0

初始发布

  • 1.0.0

最新版本

  • 1.1.0

作者

sebastopolys