kmklabs/xhp

XHP 的类库

维护者

详细信息

github.com/KMK-ONLINE/xhp

主页

源代码

安装数: 17,151

依赖项: 0

建议者: 0

安全性: 0

星标: 2

关注者: 99

分支: 160

语言:Hack

1.6.2 2016-12-28 10:10 UTC

This package is not auto-updated.

Last update: 2024-09-28 22:47:51 UTC


README

XHP 是一个 PHP 扩展,它扩展了语言语法,使得 XML 文档片段成为有效的 PHP 表达式。这允许您将 PHP 作为更严格的模板引擎使用,并提供更直接的组件实现方式。

此存储库包含 PHP 类库,您需要使用 PHP7 才能使用 XHP。PHP7 扩展可在 https://github.com/KMK-ONLINE/xhp-php7-extension 获取。

如果您想使用高级 XHP UI 库,您可能想看看 https://github.com/hhvm/xhp-bootstrap/

安装

Composer 是推荐的安装方法。要将 XHP 添加到您的项目中,请将以下内容添加到您的 composer.json 中,然后重新运行 composer

<code>
  "require": {
    "kmklabs/xhp": "1.6.*"
  }

简单示例

<?php
$href = 'https://#';
echo <a href={$href}>Facebook</a>;

注意第 3 行的语法,这不是一个字符串。这是 XHP 引入 PHP 中的主要新语法。

大括号 {} 中的内容被视为完整的 PHP 表达式。这与双引号字符串中的 {} 不同;双引号字符串只能包含变量。

您可以在 PHP 中定义任意元素,这些元素可以实例化。在底层,每个创建的元素都是类的实例。要定义新元素,只需定义一个新类即可。XHP 随带提供了一套预定义元素,这些元素为您实现了大部分 HTML。

复杂结构

请注意,XHP 结构可以是任意复杂的。这是一个有效的 XHP 程序

<?php
$post =
  <div class="post">
    <h2>{$post}</h2>
    <p><span>Hey there.</span></p>
    <a href={$like_link}>Like</a>
  </div>;

XHP 比字符串构造的一个优势是它在编译时强制执行正确的标记结构。也就是说,表达式 $foo = <h1>Header</h2>; 是一个无效的表达式,因为您不能用 /h2 标签关闭 h1 标签。在构建大量标记时,完全正确可能很困难。使用 XHP 后,编译器现在会检查您的工作,并且只有在标记正确的情况下才会运行。

动态结构

有时创建大量元素并将它们动态地添加到元素作为子元素可能很有用。所有 XHP 对象都支持 appendChild 方法,该方法的行为与相同的 JavaScript 方法类似。例如

<?php
$list = <ul />;
foreach ($items as $item) {
  $list->appendChild(<li>{$item}</li>);
}

在代码中,<ul /> 创建一个没有子元素的 ul。然后我们为 $items 列表中的每个条目动态地向它添加子元素。

转义

XHP 的一个有趣特性是自动转义的概念。在纯 PHP 中,如果您想渲染用户输入,您必须手动转义它。这种做法容易出错,并且随着时间的推移已被证明是不可持续的解决方案。它增加了代码复杂度。