atayahmet / elisa
Elisa是一个模板引擎
Requires
- php: >=5.3
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 模板文件中的 header 和 footer 模板文件包含进去。我们还向 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 }