chh / jazz
当你需要用PHP生成HTML时。
v1.0.1
2012-03-14 15:03 UTC
Requires
- php: >=5.3.3
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
文件中。