rs / framework
Redsnapper 框架
Requires
- php: ^7.0
- google/recaptcha: ~1.1
- monolog/monolog: ~1.17
- phpmailer/phpmailer: ~5.2.10
- psr/http-message: ~1.0
- robmorgan/phinx: ^0.6.6
- rs/dice: ^2.0
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ~5.4
This package is not auto-updated.
Last update: 2020-06-08 08:53:48 UTC
README
##什么是NView,为什么要使用它?
- Natural Views,可以完全将PHP与HTML分离的手段。这提供了几个关键优势
- 更易读的代码/设计。
- 关注点分离 - 设计师可以随时修改标记。
- 非线性代码。无需按照渲染顺序处理文档,可以按照业务逻辑处理。
- 可以开发更干净的标记!
##版权
- 版权所有 ©2013-2016 Red Snapper Ltd。保留所有权利。
##许可证 GNU/GPLv2 https://gnu.ac.cn/licenses/gpl-2.0.html
###示例 仓库中包含 hw 文件夹中的示例。您应该能够将其放入任何支持PHP的Web服务中。然后使用url ../hw/hw.php
###使用Natural Views。Natural Views是一种能够完全分离PHP和HTML的手段。实现这一点的机制是通过xpaths。
要尝试使用Natural Views,将代码中的视图部分分离出来,并将其放入自己的文件中,使用xml后缀。它必须是有效的XHTML 5。在PHP中,需要包含nview.iphp库。
require_once("nview.iphp");
然后需要通过调用以下内容来实例化视图对象
$nv=new NView(); //This will work if the xml file has the same basename as the php file.
也可以使用其他文件(通过使用文件名)实例化NView $nv=new NView('specific.xml');
或现有的DOMDocument、DOMElement,甚至是(有效的)XHTML字符串。
$nv=new NView('<html>...</html>');
也可以使用clone来复制NViews。
$ni=clone $nv;```` or ````$ni=new NView($nv);
NView有三个主要功能:get()、set()和show()。
通常,在使用NView的xpaths时,重要的是要知道前缀h:始终与命名空间http://www.w3.org/1999/xhtml相关联。可以通过使用函数添加其他命名空间到NView中。addNamespace($prefix,$namespace);
####set($xpath,$value = null,$ref = null) 示例:以下将所有奇数li元素的类设置为'odd'。
$nv->set('//h:li[position() mod 2 = 1]/@class','odd');
####get($xpath, $ref = null) 此函数将返回一个DOMNodeList(如果有多个结果),或者如果只有一个结果,将返回对象本身。
示例:以下返回文档中第一个li元素的类。
$class = $nv->get('(//h:li)[1]/@class');
可以使用返回的元素作为后续get或set的参考。例如
//each data-next-class will hold the class of the following li.
$llist=$nv->get('//h:ul[@class='main']/h:li');
if ($llist instanceof DOMNodeList)
{
$next = null;
for( $pos=$llist->length - 1; $pos >= 0 ; $pos-- )
{
$ref = $llist->item($pos);
if (!is_null($next))
{
$nv->set('./@data-next-class',$next,$ref);
}
$next = $nv->get('./@class',$ref);
}
}
####其他函数consume()是语法糖。它从源文档中删除指定的节点(或节点)。这对于获取li作为项目模板非常有用。它在功能上等同于
$a=$nv->get($xpath,$ref); //get the result
$nv->set($xpath,null,$ref); //delete from source
####show($asdocument = false); show()返回视图作为字符串,可以选择包括命名空间、文档类型和XML前缀(默认情况下不会包括)。
$xv= new NView('<!DOCTYPE head><head><title>title</title></head>');
$xv->set('//h:title/text()','Hello World');
$xv->show(false);
==> '<head><title>Hello World</title></head>'
####Natural Views扩展xpath以包括间隙!!间隙可能是Natural最显著有用的方面。它允许开发者插入节点——这是xpath本身无法做到的(因为XPath没有能力定位间隙或插入点)。可以通过使用DOM函数做这件事,但这个库的目的是使视图可访问,而无需学习DOM api。
有三种间隙扩展:child-gap()、preceding-gap()、following-gap()。
了解它们如何不同的最简单方法是查看以下图像