rs/framework

此包已被废弃且不再维护。未建议替代包。

Redsnapper 框架

dev-query 2017-02-06 17:04 UTC

This package is not auto-updated.

Last update: 2020-06-08 08:53:48 UTC


README

NView

文档

##什么是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()。

了解它们如何不同的最简单方法是查看以下图像

NView