8fold / php-markup
8fold Markup旨在使编写半结构化数据更简单,同时允许更多动态性。
Requires
- php: ^7.2|^8.0
- 8fold/php-html-spec: ^0.0.5
- 8fold/php-shoop-shelf: ^0.8.5
- nesbot/carbon: ^2.5
Requires (Dev)
- phpunit/phpunit: ^9.3.3
- dev-main
- 0.9.5
- 0.9.4
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.7
- 0.4.6
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.1
- dev-r1.0.0
This package is auto-updated.
Last update: 2023-03-05 22:47:14 UTC
README
8fold Markup不是一个类似于XML、HTML、YAML和其他ML的新标记格式;相反,它是一个使用PHP生成这些(XML和HTML)的库。
它使用与8fold Shoop中找到的类似API来创建库间的连贯性。
安装
composer require 8fold/php-markup
使用
$element = Element::fold("hello"); print $lement->unfold(); // output: <hello></hello>
您也可以直接输出字符串。
$element = Element::fold("hello"); print $element; // output: <hello></hello>
您可以为元素添加属性。
$element = Element::fold("hello")->attr("id my-element"); print $element; // output: <hello id="my-element"></hello>
您可以从HTML开始,HTML是自知的(理解和遵守W3C HTML规范)。
如果HTML元素未知,Markup将回退到使用Element。
$html = Html::p(); print $html->unfold(); print $html;
有两种方法可以创建更复杂的元素(或现在的组件)。第一个例子使用Html
,而第二个使用UIKit
。
如果UIKit
组件未知,它将回退到Html
。
$html = Html::ul( Html::li("Hello, "), Html::li("World!") ); print $html; // output: // <ul><li>Hello, </li><li>World!</li></ul> $uikit = UIKit::listWith( "Hello, ", "World!" ); print($uikit); // output: same as above
为什么?
在半结构化数据方面,XML及其衍生品可能很繁琐且语法复杂。8fold Markup使输出半结构化数据变得更容易,并允许更多动态性。
Markup最小化了输出,使传输的数据包更小、更快。
Markup更喜欢一个I/O步骤来编译(展开)生成的纯文本,这意味着没有解析字符串即可得到所需输出。
在HTML方面,属性将保持一致排序,并且如果给定属性不是W3C HTML5规范的一部分或对该元素已弃用,它将自动被删除;无需重写大量HTML模板即可保持您的标记更新。
指导原则
最小化I/O,同时最大化灵活性和可扩展性。
标准化HTML输出,并允许用户设置自己的标准。
简化复杂但常见的元素(UIKit)的创建。
治理
- 问题编号越高,优先级越高(问题标签)。
- 现在为仁慈的独裁统治。
贡献
任何人都可以提交PR来添加功能,因为我们只添加我们为正在开发的解决方案所需的功能。
每个PR都将被审查,包括核心开发者提交的(不允许直接推送)。
版本控制
我们遵循语义化版本控制。当前我们处于零主版本号状态。x.y.z
:其中x
为主版本号,y
为次版本号,z
为补丁版本号。在这种情况下,x
保持为0,以表明API可能会随时新增或删除。话虽如此,对y
的更改通常保留用于重大更改,而对z
的更改则代表新增功能、API或错误修复。
历史
这个库最初是由三个(或更多)独立库组成的,每个库的稳定性程度不同。
Element
的版本为3.0.1;Html
的版本也是3.0.1;UIKit
之前从未公开发布。
这个库取代了那三个库,并在过程中弃用了它们。(其他库和项目的弃用期限将在2021年1月1日或之后结束。)