phpgt/dom

现代DOM API。

维护者

详细信息

github.com/PhpGt/Dom

源代码

问题

资助包维护!
PhpGt


README

The modern DOM API for PHP 7 projects

现代DOM API。

该项目建立在PHP的本地DOMDocument之上,提供对现代DOM API的访问,就像在浏览器中处理客户端代码一样。

在服务器端代码中执行DOM操作可以增强动态页面构建的方式。利用标准化的面向对象接口意味着页面可以预先处理,从而有利于浏览器、Web服务器和内容分发网络。

Build status Code quality Code coverage Current version PHP.Gt/Dom documentation

示例用法:你好,你!

重要提示:这里显示的示例仅用于说明目的,但使用DOM直接将数据设置为元素的值会紧密耦合逻辑和视图,这被认为是不良的做法。请参阅DomTemplate库以获取绑定数据到DOM的更健壮的解决方案。

考虑一个包含用于输入姓名的输入元素的表单。当表单提交时,页面应该通过您的名字来问候您。

这是一个简单示例,说明如何将源HTML文件视为模板。这可以轻松应用于更高级的模板页面,以提供动态内容,而无需使用非标准的占位符技术,如{{花括号}}或从PHP内部进行HTML构造的错误高风险方法echo '<div class='easy-mistake'>' . $content['opa'] . '</div>'

源HTML(name.html

<!doctype html>
<h1>
	Hello, <span class="name-output">you</span> !
</h1>

<form>
	<input name="name" placeholder="Your name, please" required />
	<button>Submit</button>
</form>

PHP用于注入您的姓名(index.php

<?php
use Gt\Dom\HTMLDocument;
use Gt\Dom\HTMLElement\HTMLSpanElement;
require "vendor/autoload.php";

$html = file_get_contents("name.html");
$document = new HTMLDocument($html);

if(isset($_GET["name"])) {
	$span = $document->querySelector(".name-output");
	$span->innerText = $_GET["name"];
}

echo $document;

快速特性

已知限制 / W3C 规范兼容性

此存储库旨在尽可能准确地实现 https://dom.spec.whatwg.org/ 中的 DOM 规范 - 到 v4.0.0 版本为止,所有功能都已实现,但与标准存在以下不可避免的微小偏差

  • 元素的 tagName 属性是大写。
  • 要检查 HTMLElement 类型,必须调用 Element::getElementType() - 没有可用作 instanceofElement 的子类,例如。
  • DOM 规范定义了只能在客户端实现的功能。例如,HTMLInputElement::files 返回一个包含用户通过浏览器界面选择的全部文件的 FileList。这种功能在服务器端无法实现,但已被实现以保持与规范的兼容性。尝试在此库中使用客户端功能将抛出 ClientSideOnlyFunctionalityException

数据绑定和页面模板功能

此存储库旨在尽可能准确地实现 DOM 规范。在 https://php.gt/domtemplate 上有一个存储库扩展,它通过自定义元素和模板属性添加页面模板和数据绑定功能,引入了类似 WebComponents 的服务器端功能。