PHP网页模板的实现方法和装置与流程

文档序号:12176481阅读:386来源:国知局
PHP网页模板的实现方法和装置与流程

本发明涉及互联网网站开发技术领域,具体而言,涉及一种PHP网页模板的实现方法和装置。



背景技术:

HTML(Hypertext Markup Language,超文本标记语言)是一种为“网页创建和其它可在网页浏览器中看到的信息”而设计的标记语言。HTML是一种基础技术,常与CSS(Cascading Style Sheets,层叠样式表)、JavaScript一起被众多网站用于设计令人赏心悦目的网页、网页应用程序以及移动应用程序的用户界面。网页浏览器可以读取HTML文件,并将其渲染成可视化网页。HTML描述了网站的结构语义随着线索的呈现,使之成为一种标记语言而非编程语言。

PHP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,初始的开发模板是混合层的数据编程,网页呈现逻辑(视图)还会有HTML代码和PHP程序强耦合在一起。PHP脚本的编写者必须既是网页设计者,又是PHP开发者。但实际情况是,多数Web开发人员要么是精通网页设计,能够设计出漂亮的网页外观,但是编写的PHP代码很糟糕;要么仅熟悉PHP编程,能够写出健壮的PHP代码,但是设计的网页外观很难看,具备两种才能的开发人员很少见。

针对上述HTML代码和PHP程序强耦合的问题,现有技术提供了“模板引擎”技术,模板引擎技术将美工页面(HTML代码)指定为模板文件,并将这个模板文件中有活动的内容,如数据库输出、用户交互等部分,定义成使用特殊“定界符”包含的“变量”,该特殊定界符如{},然后放在模板文件中相应的位置。当用户浏览时,由PHP脚本程序打开该模板文件,并将模板文件中定义的变量进行替换。这样,模板中的特殊变量被替换为不同的动态内容时,就会输出需要的页面。

然而,上述“模板引擎”技术中,通常大量地使用单独的特定标记,例如上述定界符,导致代码转换过程的冗余度较高,降低了代码转换效率。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种PHP网页模板的实现方法和装置,以提高代码的转换效率。

第一方面,本发明实施例提供了一种PHP网页模板的实现方法,包括:将HTML模板中的代码内容加载至PHP初始化文件中,其中,该HTML模板中,指定属性的元素上添加有设定标签,该指定属性包括控制属性和包含其它文件属性;从PHP初始化文件中查找是否存在属性为变量的元素或含有上述设定标签的元素;如果存在属性为变量的元素,按照设定的变量代码转换方式,将查找到的属性为变量的元素转换为PHP代码;如果存在含有上述设定标签的元素,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码;将完成所有属性为变量的元素和含有上述设定标签的元素转换后的PHP初始化文件作为PHP网页模板。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,上述设定标签为设定字符串和连字符的组合,该组合添加至指定属性的元素的开头位置;或者,上述设定标签为下划线符号,该下划线符号添加至指定属性的元素的底部位置。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,按照设定的变量代码转换方式,将查找到的属性为变量的元素转换为PHP代码包括:按照设定的变量代码转换方式:{{$变量}}转换为<?php echo$变量?>,将查找到的属性为变量的元素设置于上述<?php echo$变量?>格式中的$变量所在位置。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码包括:判断含有上述设定标签的元素的属性是否为控制属性,该控制属性包括:条件控制属性和循环控制属性;如果是,获取含有上述设定标签的元素的属性值;在含有上述设定标签的元素之前添加<?php上述属性值的控制字段(上述属性值):?>,在含有上述设定标签的元素之后添加<?php end上述控制字段;?>;当属性值为条件控制属性时,控制字段为if或else,当属性值为循环控制属性时,控制字段为foreach或for;移除含有上述设定标签的元素。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码包括:判断含有上述设定标签的元素的属性是否为包含其它文件属性;如果是,获取含有上述设定标签的元素的属性值;在含有上述设定标签的元素之后添加<?php include(上述属性值)?>;移除含有上述设定标签的元素。

第二方面,本发明实施例还提供一种PHP网页模板的实现装置,包括:代码加载模块,用于将HTML模板中的代码内容加载至PHP初始化文件中,其中,该HTML模板中,指定属性的元素上添加有设定标签,指定属性包括控制属性和包含其它文件属性;元素查找模块,用于从PHP初始化文件中查找是否存在属性为变量的元素或含有上述设定标签的元素;第一转换模块,用于当元素查找模块查找到存在属性为变量的元素时,按照设定的变量代码转换方式,将查找到的属性为变量的元素转换为PHP代码;第二转换模块,用于当元素查找模块查找到存在含有上述设定标签的元素时,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码;网页模板确定模块,用于将完成所有属性为变量的元素和含有上述设定标签的元素转换后的PHP初始化文件作为PHP网页模板。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,上述设定标签为设定字符串和连字符的组合,该组合添加至指定属性的元素的开头位置;或者,上述设定标签为下划线符号,该下划线符号添加至指定属性的元素的底部位置。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,第一转换模块还用于按照设定的变量代码转换方式:{{$变量}}转换为<?php echo$变量?>,将查找到的属性为变量的元素设置于上述<?php echo$变量?>格式中的$变量所在位置。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,第二转换模块包括:第一属性判断单元,用于判断含有上述设定标签的元素的属性是否为控制属性,该控制属性包括:条件控制属性和循环控制属性;第一属性值获取单元,用于当第一属性判断单元的判断结果为是时,获取含有上述设定标签的元素的属性值;第一添加单元,用于在含有上述设定标签的元素之前添加<?php上述属性值的控制字段(上述属性值):?>,在含有上述设定标签的元素之后添加<?php end上述控制字段;?>;当属性值为条件控制属性时,控制字段为if或else,当属性值为循环控制属性时,控制字段为foreach或for;第一移除单元,用于移除含有上述设定标签的元素。

结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中,第二转换模块包括:第二属性判断单元,用于判断含有上述设定标签的元素的属性是否为包含其它文件属性;第二属性值获取单元,用于当第二属性判断单元的判断结果为是时,获取含有上述设定标签的元素的属性值;第二添加单元,用于在含有上述设定标签的元素之后添加<?php include(上述属性值)?>;第二移除单元,用于移除含有上述设定标签的元素。

本发明实施例提供的上述方法和装置中,通过将HTML模板中的代码内容加载至PHP初始化文件中,能够在PHP初始化文件中对属性为变量的元素或含有设定标签的元素进行代码转换,得到PHP代码,进而得到PHP网页模板,整个PHP网页模板实现过程中,仅对属性为变量的元素或含有设定标签的元素(即属性为控制属性和包含其它文件属性)进行转换,且设定标签为添加在控制属性和包含其它文件属性的元素上的,提升了元素的识别效率,进而提升了代码的转换效率和准确度。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的PHP网页模板的实现方法的流程示意图;

图2示出了本发明实施例提供的PHP网页模板的实现方法的移除代码转换方式的流程示意图;

图3示出了本发明实施例提供的PHP网页模板的实现装置的结构示意图;

图4示出了本发明实施例提供的PHP网页模板的实现装置的第二转换模块的结构示意图;

图5示出了本发明实施例提供的PHP网页模板的实现装置的另一种第二转换模块的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合附图,对本发明的具体实施方式作详细说明。

实施例1

参见图1所示的一种PHP网页模板的实现方法流程图,该方法应用于服务器端,包括以下步骤:

步骤S102,将HTML模板中的代码内容加载至PHP初始化文件中。其中,该HTML模板中,指定属性的元素上添加有设定标签,该指定属性包括控制属性(例如条件属性或循环属性)和包含其它文件属性。

在本实施例中上述设定标签可以为设定字符串和连字符的组合,例如data-或data_,该组合优选添加至上述指定属性的元素的开头位置;或者,上述设定标签为下划线符号,该下划线符号添加至指定属性的元素的底部位置。

上述PHP初始化文件可以通过初始化一个PHP的DOMDocument得到,也可以是预先构建好的PHP初始化文件。

步骤S104,从PHP初始化文件中查找是否存在属性为变量的元素或含有上述设定标签的元素,如果存在属性为变量的元素,执行步骤S106;如果存在含有上述设定标签的元素,执行步骤S108。

本实施例中的元素指HTML元素,是从开始标签(start tag)到结束标签(end tag)中的代码。

步骤S106,按照设定的变量代码转换方式,将查找到的属性为变量的元素转换为PHP代码。

设定的变量代码转换方式可以根据需要灵活制定,符合PHP代码规则即可。例如当HTML模板中的代码为:{{$变量}};转换为PHP代码:<?php echo$变量?>。

步骤S108,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码。

上述设定的移除代码转换方式也可以灵活制定,符合PHP代码规则即可。例如:当HTML模板中的代码为:<div data-if=”$变量==1”>内容</div>,转换为PHP代码:<?php if(true):?><div>内容</div><?php endif;?>。

步骤S110,将完成所有属性为变量的元素和含有上述设定标签的元素转换后的PHP初始化文件作为PHP网页模板。

本实施例提供的方法,通过将HTML模板中的代码内容加载至PHP初始化文件中,能够在PHP初始化文件中对属性为变量的元素或含有设定标签的元素进行代码转换,得到PHP代码,进而得到PHP网页模板,整个PHP网页模板实现过程中,仅对属性为变量的元素或含有设定标签的元素(即属性为控制属性和包含其它文件属性)进行转换,且设定标签为添加在控制属性和包含其它文件属性的元素上的,提升了元素的识别效率,进而提升了代码的转换效率和准确度。

针对存在属性为变量的元素的情况,本实施例按照设定的变量代码转换方式进行如下代码转换:

将{{$变量}}转换为<?php echo$变量?>,将查找到的属性为变量的元素设置于上述<?php echo$变量?>格式中的$变量所在位置。

举例如下(其中div为示例标签,在实际中可是其他标签):

模板示例:{{$变量}}

转换得到的PHP代码:<?php echo$变量?>

实现方式:将字符串“$变量”替换为“echo$变量”,将{{替换成<?php,将}}替换成?>。

针对上述设定标签的元素的属性为控制属性或包含其它文件属性这两种情况,本实施例给出了具体的转换方式,参见图2所示的移除代码转换方式的具体流程图,包括:

步骤S202,判断含有上述设定标签的元素的属性是否为控制属性,具体地,该控制属性包括:条件控制属性和循环控制属性。如果是,执行步骤S204;如果否,说明上述设定标签的元素的属性为包含其它文件属性,执行步骤S214。

上述元素的属性提供了有关HTML元素的更多的信息。属性总是以名称/值对的形式出现,比如:name="value",name为属性名称,"value"为对应的属性值。通常属性在HTML元素的开始标签中规定。

步骤S204,获取含有设定标签的元素的属性值,即获取属性为控制属性的元素的属性值。

步骤S206,在含有上述设定标签的元素之前添加<?php上述属性值的控制字段(上述属性值):?>,在含有上述设定标签的元素之后添加<?php end上述控制字段;?>。

其中,条件控制属性的控制字段为if或else,循环控制属性的控制字段为foreach或for。

步骤S208,移除含有上述设定标签的元素。

当上述设定标签的元素的属性为包含其它文件属性时,执行以下步骤:

步骤S214,获取含有上述设定标签的元素的属性值,即获取上述属性为包含其它文件属性的元素的属性值。

步骤S216,在含有上述设定标签的元素之后添加<?php include(上述属性值)?>。

步骤S218,移除含有上述设定标签的元素。

根据上述移除代码转换方式,下面以设定标签为设定字符串和连字符的组合为例进行说明,该设定字符串和连字符的组合具体为data-,即HTML5中标准的自定义属性。现举例如下(其中div为示例标签,在实际中可是其他标签):

1、条件控制模板示例:

<div data-if=”$变量==1”>内容</div>

转换方式:

初始化一个PHP的DOMDocument,加载模板内容,使用PHP的DOMXpath查找所有含有属性data-if的元素,循环处理这些元素,对于每个元素,执行以下操作:

首先,获取此元素的data-if的值,下称属性值;

其次,使用PHP的Dom处理功能,在此元素之前加入文本节点,内容为<?php if(属性值):?>;

再次,使用PHP的Dom处理功能,在此元素之后加入文本节点,内容为<?php endif;?>;

然后,使用PHP的Dom处理功能,移除data-if属性;

最后,将DOMDocument存储为PHP字符串,DOMDocument中的PHP代码:

<?php if(true):?><div>内容</div><?php endif;?>

2、循环控制模板示例:

<div data-foreach=”$列表as$值”>{{$值}}</div>

转换方式:

初始化一个PHP的DOMDocument,加载模板内容,使用PHP的DOMXpath查找所有含有属性data-foreach的元素,循环处理这些元素,对于每个元素,执行以下操作:

首先,获取此元素的data-foreach的值,下称属性值;

其次,使用PHP的Dom处理功能,在此元素之前加入文本节点,内容为<?php foreach(属性值):?>;

再次,使用PHP的Dom处理功能,在此元素之后加入文本节点,内容为<?php endforeach;?>;

然后,使用PHP的Dom处理功能,移除data-foreach属性;

最后,将DOMDocument存储为PHP字符串,,DOMDocument中的PHP代码:

<?php foreach($列表as$值):?><div><?php echo$值?></div><?php endforeach;?>

除了上述示例中的foreach循环,还可以使用for循环,其实现方式与foreach相同。

3、包含其他文件模板示例:

<div data-include=”$文件名”></div>

转换方式:

初始化一个PHP的DOMDocument,加载模板内容,使用PHP的DOMXpath查找所有含有属性data-include的元素,循环处理这些元素,对于每个元素,执行以下操作:

首先,获取此元素的data-include的值,下称属性值;

其次,使用PHP的Dom处理功能,在此元素之后加入文本节点,内容为<?php include(属性值)?>;

然后,使用PHP的Dom处理功能,移除data-include属性;

最后,将DOMDocument存储为PHP字符串,DOMDocument中的PHP代码:

<div><?php include($文件名)?></div>

相比较于现有技术中的模板,本实施例提供的模板实现更优雅简洁,且使用了HTML标准的自定义属性,符合HTML规范,不引入额外的控制元素,代码更清晰容易理解,便于维护。以条件控制为例,现有的模板技术一般表示如下:

{{if($变量)}}

<div>内容</div>

{{endif}}

本发明实施例使用的模板技术表示如下:

<div data-if=”$变量”>内容</div>

此例可见,本实施例使用HTML的规范属性,减少了代码量,提高了代码的清晰度。

综上,本实施例提供的PHP网页模板的实现方法,利用HTML可自定义属性的特点,使用data-开头的自定义属性来作为模板属性,以简洁的代码实现前端与后端的分离。当进行模板编译时,对属性进行判断,如果是自定义的属性或者属性为变量,则进行相应处理,转换成特定的PHP代码。

实施例2

本发明实施例提供了一种PHP网页模板的实现装置,该装置应用于服务器端,参见图3所示的一种PHP网页模板的实现装置的结构示意图,该装置包括:代码加载模块31、元素查找模块32、第一转换模块33、第二转换模块34、网页模板确定模块35,其中各模块的功能如下:

代码加载模块31,用于将HTML模板中的代码内容加载至PHP初始化文件中;

其中,该HTML模板中指定属性的元素上添加有设定标签,指定属性包括控制属性和包含其它文件属性。

元素查找模块32,与代码加载模块31连接,用于从PHP初始化文件中查找是否存在属性为变量的元素或含有上述设定标签的元素;

第一转换模块33,与元素查找模块32连接,用于当元素查找模块查找到存在属性为变量的元素时,按照设定的变量代码转换方式,将查找到的属性为变量的元素转换为PHP代码;

第二转换模块34,与元素查找模块32连接,用于当元素查找模块查找到存在含有上述设定标签的元素时,按照设定的移除代码转换方式,将查找到的含有上述设定标签的元素转换为PHP代码;

网页模板确定模块35,与第一转换模块33和第二转换模块34连接,用于将完成所有属性为变量的元素和含有上述设定标签的元素转换后的PHP初始化文件作为PHP网页模板。

本实施例提供的装置,通过将HTML模板中的代码内容加载至PHP初始化文件中,能够在PHP初始化文件中对属性为变量的元素或含有设定标签的元素进行代码转换,得到PHP代码,进而得到PHP网页模板,整个PHP网页模板实现过程中,仅对属性为变量的元素或含有设定标签的元素(即属性为控制属性和包含其它文件属性)进行转换,且设定标签为添加在控制属性和包含其它文件属性的元素上的,提升了元素的识别效率,进而提升了代码的转换效率和准确度。

在本实施例中上述设定标签为设定字符串和连字符的组合,该组合添加至指定属性的元素的开头位置;或者,上述设定标签为下划线符号,该下划线符号添加至指定属性的元素的底部位置。

在此以设定标签为设定字符串和连字符的组合为例进行说明,该设定字符串和连字符的组合具体为data-,即HTML5中标准的自定义属性。

具体地,第一转换模块33还用于按照设定的变量代码转换方式:{{$变量}}转换为<?php echo$变量?>,将查找到的属性为变量的元素设置于上述<?php echo$变量?>格式中的$变量所在位置。

进一步地,为实现将查找到的含有上述设定标签的元素转换为PHP代码,参见图4所示的第二转换模块的结构示意图,第二转换模块34具体包括:

第一属性判断单元41,用于判断含有上述设定标签的元素的属性是否为控制属性;

具体地,控制属性包括:条件控制属性和循环控制属性。

第一属性值获取单元42,与第一属性判断单元41连接,用于当第一属性判断单元的判断结果为是时,获取含有上述设定标签的元素的属性值;

第一添加单元43,与第一属性值获取单元42连接,用于在含有上述设定标签的元素之前添加<?php上述属性值的控制字段(上述属性值):?>,在含有上述设定标签的元素之后添加<?php end上述控制字段;?>;

其中,当属性值为条件控制属性时,控制字段为if或else,当属性值为循环控制属性时,控制字段为foreach或for。

第一移除单元44,与第一添加单元43连接,用于移除含有上述设定标签的元素。

进一步地,为实现将查找到的含有上述设定标签的元素转换为PHP代码,参见图5所示的第二转换模块的结构示意图,第二转换模块34还可以具体包括:

第二属性判断单元51,用于判断含有设定标签的元素的属性是否为包含其它文件属性;

第二属性值获取单元52,与第二属性判断单元51连接,用于当第二属性判断单元的判断结果为是时,获取含有上述设定标签的元素的属性值;

第二添加单元53,与第二属性值获取单元52连接,用于在含有上述设定标签的元素之后添加<?php include(上述属性值)?>;

第二移除单元54,与第二添加单元53连接,用于移除含有上述设定标签的元素。

相比较于现有技术中的模板,本实施例提供的模板实现更优雅简洁,且使用了HTML标准的自定义属性,符合HTML规范,不引入额外的控制元素,代码更清晰容易理解,便于维护。以条件控制为例,现有的模板技术一般表示如下:

{{if($变量)}}

<div>内容</div>

{{endif}}

本发明使用的模板技术表示如下:

<div data-if=”$变量”>内容</div>

此例可见,本实施例使用HTML的规范属性,减少了代码量,提高了代码的清晰度。

本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

综上,本发明实施例提供的一种PHP网页模板的实现方法和装置,利用HTML可自定义属性的特点,使用data-开头的自定义属性来作为模板属性,符合HTML规范,不引入额外的控制元素,代码更清晰容易理解,实现了前端开发工作与后端开发工作的分离。当进行模板编译时,对属性进行判断,如果是自定义的属性或者属性为变量,则进行相应处理,转换成特定的PHP代码。

本发明实施例所提供的PHP网页模板的实现方法和装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,上述程序代码包括的指令可用于执行前面方法实施例中上述的方法,具体实现可参见方法实施例,在此不再赘述。

上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1