chh/jazz

当你需要用PHP生成HTML时。

v1.0.1 2012-03-14 15:03 UTC

This package is not auto-updated.

Last update: 2024-09-14 12:14:30 UTC


README

当你绝对、肯定需要在PHP代码中生成HTML时。

Jazz是一个非常小的库,可以将嵌套数组转换为HTML。如果你愿意,可以称其为“DSL”。它与PHP 5.3.3之后的版本兼容良好,但与5.4的新短数组语法搭配最好。

我编写了Jazz,因为总有一些地方需要生成一些HTML,但又不想为了性能或简单而使用模板。

一开始你可能只需要一个标签,你心想“好吧,我在使用字符串”,然后你需要添加一个属性,再添加第二个,也许第三个。然后你发现自己陷入了一个大麻烦。

我写过很多这样的代码片段,我已经厌倦了。

$html  = '<div class="widget '.join(" ", $classes).'" id="'.$id.'" style="display: none;" data-widget-name="' . $widgetName . '">';
$html .= '<ul>' . $this->getSomeListItems() . '</ul>';
$html .= '</div>';

这不仅难以理解,而且非常丑陋,添加属性或添加其他子元素也很繁琐。

现在放松一下,来点Jazz

array_unshift($classes, "widget");

$attrs = [
    "class" => $classes, 
    "id" => $id, 
    "style" => "display: none;", 
    "data-widget-name" => $widgetName
];

$html = Jazz::render(
    ["#div", $attrs, [
        ["#ul", $this->getSomeListItems()]
    ]]
);

在这种情况下,它可能并不比之前的短,但它很容易扩展,意图也很清晰。

Hello World

<?php

use Jazz;

$html = [
	# What a funky Headline!
    ["#h1", "Hello World"],
    
    # This is PHP Code, so comments work as expected.
    ["#p", ["class" => "intro"], [
        "Jazz turns a nested, \"lispy\" array into HTML using a simple syntax.",

        ["#a", ["href" => "https://github.com/CHH/Jazz"], [
            "Jazz is awesome."
        ]]
    ]]
];

echo Jazz::render($html);
# <h1>Hello World</h1>
# <p class="intro">Jazz turns a nested, "lispy" array into HTML using a simple syntax.
# <a href="https://github.com/CHH/Jazz">Jazz is awesome.</a>
# </p>

语法

标签

标签是一个最多包含三个元素的数组(其中$attributes$body是可选的)

概要

["#$tagName", $attributes, $body]
  • "#$tagName"必需:第一个元素是HTML标签的名称,前面带有#。这是标签的唯一必需项。
  • $attributes可选:属性是一个可选的数组,作为第二个元素传入。数组中的每个键都是属性名称。
  • $body可选:主体可以是字符串或子元素的数组。主体不会被转义!

当省略属性时,标签中的第二个元素被视为主体。

标签可以以不同的形式书写,就像HTML中一样

  • 简短形式。例如["#br"]变为<br>
  • 简短形式,带有属性。例如["#img", ["src" => "/foo/bar.png"]]变为<img src="/foo/bar.png">
  • 简短形式,带有主体:例如["#p", "Foo"]变为<p>Foo</p>
  • 长格式。例如["#h1", ["role" => "banner"], "Hello World"]变为<h1 role="banner">Hello World</h1>

安装

获取Composer

% wget https://getcomposer.org.cn/composer.phar

在应用程序的composer.json中要求chh/jazz

{
    "require": {
        "chh/jazz": "*"
    }
}

然后安装定义的依赖项

% php composer.phar install

加载Composer的类加载器

<?php

require_once("vendor/.composer/autoload.php");

不使用Composer? lib/Jazz.php 文件没有依赖项,所以你可以获取这个文件,将其复制到你的项目目录中,并在你的应用程序中要求它(尽管你仍然应该至少考虑在你的应用程序中使用Composer)。

许可证

Jazz在MIT许可证下授权,与源代码一起包含在LICENSE.txt文件中。