atayahmet/elisa

Elisa是一个模板引擎

dev-master / 1.0.0.x-dev 2015-07-11 08:29 UTC

This package is auto-updated.

Last update: 2024-09-17 09:14:23 UTC


README

#Elisa PHP模板语言

Elisa是一个模板语言库。简单来说,模板语言是一种从视图文件中删除PHP代码的方法。

模板语言中使用的PHP代码的对应术语没有限制。这完全取决于开发者的想象力。

但当然,目标应该是使用简单、快速生成内容。

##安装Elisa可以通过composer安装Elisa。在composer文件中,将以下json行添加到require字段中。

"atayahmet/elisa": "1.0.0.*@dev"

然后,在命令行中运行以下命令

$ composer update

##配置

use Elisa\Elisa;

$elisa = new Elisa;

$elisa->setup([
	'storage' => '/storage/path/',
	'cache'	  => false,
	'ext'	  => '.html',
	'master'  => 'master'
]);

参数详情

##使用

首先,让我们看看master模板文件。

master.html

<html>
	<head>
		
	</head>

	<body>
	{ @content }
	</body>
</html>

现在,让我们看看master文件中将要到来的@content区域所在的文件。

home.html

<h1>Home Page</h1>
<p>This is home page.</p>

在准备完必要的master和content文件后,我们可以演示一次性使用它们。

$elisa->composer('home', true);

或者

$home = $elisa->composer('home');

在这些操作之后,在配置阶段,您可以在storage区域中看到您定义的目录中模板文件被缓存为PHP文件。

运行composer命令后,结果如下

<html>
	<head>
		
	</head>
	<body>
		<h1>Home Page</h1>
		<p>This is home page.</p>
	</body>
</html>

##方法参考

##模板配置器

##术语的使用

有关控制术语、打印术语和其他使用的详细信息,请点击链接: 术语

#方法使用

###setup 包的配置设置中使用的函数。

示例

$elisa->setup([
	'storage' => '/storage/path/',
	'cache'	  => false,
	'ext'	  => '.html',
	'master'  => 'master'
]);

###storage

setup方法之外的配置设置中定义了模板文件将被缓存的目录。

示例

$elisa->storage('/storage/path/');

###ext

setup方法之外定义了模板文件的扩展名。

示例

$elisa->ext('.html');

###tags

setup方法之外更改了开启和关闭标签。

示例

$elisa->tags(['{{', '}}']);

###master

setup方法之外定义了主模板框架文件。

示例

$elisa->master('master_layout');

###cache

setup方法之外定义了渲染后的模板文件是否应该在缓存中保留。

示例

$elisa->cache(true); // default true

###aliases

通过给函数起简称或不同的名字,可以创建自己的函数术语。

示例

$elisa->aliases(['length' => 'strlen', 'dump' => 'var_dump']);

strlen

{ length('Hello World!') }

var_dump

{ dump('Hello World!') }

###composer

如果模板文件不在缓存中,则将其编译(渲染)并添加到缓存中。

示例

$elisa->composer('home.index');

###view

允许将PHP文件的内容直接传递给一个变量。 示例:

$elisa->view('common.sidebar');

###show

允许将PHP文件的内容直接输出到屏幕。

示例

$elisa->show('tools.slider');

###with

允许向模板和view文件发送参数。

示例

$elisa->with(['name' => 'Ahmet']);

$elisa->composer('home.contet', true);

home/content.html

Hello {! $name }

###each

向所有模板和view文件发送您始终想要的参数。

示例

$elisa->each(['name' => 'Ahmet']);

参数将发送到以下两个view文件。

示例

$elisa->view('common.header');

$elisa->view('common.footer');

###clear

清除缓存中的已编译模板文件。

示例

$elisa->clear();

###beforeEvent

在文件处理之前,执行已记录的事件文件。

注意:您发送的参数将发送到要执行的事件。

示例

$elisa->beforeEvent(function($params){
	
	// do something...

});

###afterEvent

在文件处理之后,执行已记录的事件文件。

注意:afterEvent仅与show()方法一起使用。

注意:您发送的参数将发送到要执行的事件。

示例

$elisa->afterEvent(function($params){
	
	// do something...

});

#配置器

###@content

这是一个标签,用于创建模板内容的主体部分。只能在主模板页面上使用。

示例

master.html

<html>
	<head>
		
	</head>

	<body>
	{ @content }
	</body>
</html>

您可以使用以下方式使用主模板来编译您想要的主体(body)模板文件:

$elisa->composer('home.body');

###@extend()

这个方法有助于扩展模板页面。使用此方法,您可以同时包含模板文件和普通PHP文件。

此外,您还可以向这些文件发送参数。

profile.html

<h1>User Profile</h1>

<header>
	{ @extend('profile.header', ['name' => 'Can']) }
</header>

<footer>
	{ @extend('profile.footer') }
</footer>

在上面的示例中,我们将 profile.html 模板文件中的 headerfooter 模板文件包含进去。我们还向 header 文件发送了一个参数。

###@section()

您可以向指定的section区域发送来自另一个模板文件的内容。

示例

master.html

<html>
	
	<head>
		{ @section('header') }

		{ @end }
	</head>

	<body>
		{ @content }
		
		{ @section('footer') }

		{ @end }
	</body>

</html>

login.html

<h1>Login page</h1>

{ @append('header') }
<title>Login page</title>
{ @end }

{ @append('footer') }
<script type="text/javascript">
	function hello()
	{
		alert('Hello World!');
	}
</script>
{ @end }

在上面的示例中,我们有一个主页面文件,其中包含我们定义的两个section区域。

随后,我们创建了一个名为 login.html 的模板文件,并使用 append 方法将内容发送到主页面文件中的section区域。

###@append()

向指定的section区域发送内容。

注意:上面有详细的示例。

示例

{ @append('header') }
<title>Login page</title>
{ @end }

{ @append('footer') }
<script type="text/javascript">
	function hello()
	{
		alert('Hello World!');
	}
</script>
{ @end }

#术语

在Elisa中,可以直接使用PHP术语。您可以在自己的标签之间简单地应用循环和条件结构。

###if运算符

示例 1

{ if($status === true) }
	<h1>Is logged in!</h1>
{ endif }

示例 2

{ if($status === true) }
	<h1>Is logged in!</h1>
{ else }
	<h1>Is not logged in!</h1>
{ endif }

示例 3

{ if($status == 1) }
	<span>status: 1</span>
{ elseif($status == 2) }
	<span>status: 2</span>
{ else }
	<span>--</span>
{ endif }

###循环(for,foreach,while)

for

{ for($i=1; $i<=5; $i++) }
	<h3>{! $i }</h3>
{ endfor }

foreach

{ foreach($users as $user) }
	<div>{! $user['name']} {! $user['surname'] }</div>
{ endforeach }

while

{ while($product == $products) }
	<div>{! $proudct['name']}</div>
{ endwhile }