johntaa / blade
Laravel中的独立版本Blade模板引擎,仅用单个PHP文件
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-28 19:36:32 UTC
README
BladeOne
BladeOne是Blade模板引擎的独立版本,使用单个PHP文件,可以移植并在不同项目中使用。
简介(来自Laravel网页)
Blade是Laravel提供的一个简单而强大的模板引擎。与其它流行的PHP模板引擎不同,Blade不会限制你在视图中使用纯PHP代码。所有Blade视图都会被编译成纯PHP代码并缓存,直到它们被修改,这意味着Blade几乎不会给你的应用程序增加任何开销。Blade视图文件使用 .blade.php 扩展名,通常存储在 resources/views 目录中。
关于此版本
按照标准,Blade是Laravel(Illuminate组件)的一部分,要使用它,你需要安装Laravel和Illuminate-view组件。作为模板引擎的Blade非常清晰和简洁。它还生成干净(某些)的代码。它开始被视为PHP(Smarty已经沉入历史)的事实上的模板系统。因此,如果我们能够在不使用Laravel的情况下使用它,那么这对许多项目来说是一个很大的优点。实际上,从理论上讲,它甚至可以与Laravel一起使用。存在不同版本的Blade模板可以在不使用Laravel的情况下运行,但大多数需要50个或更多的文件,这些模板增加了新的复杂性。
- 更多的文件要管理。
- 对当前项目的更改(如果你想将模板集成到现有项目中)
- 与其他项目的兼容性问题。
- 速度(如果你的服务器没有使用op-cache)
- 原始Blade的大部分代码用于未来使用,包括使用不同模板引擎的机会。
- 一些Laravel遗留代码。
本项目使用一个名为BladeOne.php的单个文件和一个名为BladeOne的单个类。如果你想使用它,请包含它,创建文件夹,然后就可以使用了!没有更多(甚至没有命名空间)*[]
用法
example.php
<?php include "BladeOne.php"; Use eftec\bladeone; $views = __DIR__ . '/views'; $cache = __DIR__ . '/cache'; define("BLADEONE_MODE",1); // (optional) 1=forced (test),2=run fast (production), 0=automatic, default value. $blade=new bladeone\BladeOne($views,$cache); echo $blade->run("hello",array("variable1"=>"value1"));
或使用composer的autoload.php
<?php require "vendor/autoload.php"; Use eftec\bladeone; $views = __DIR__ . '/views'; $cache = __DIR__ . '/cache'; define("BLADEONE_MODE",1); // (optional) 1=forced (test),2=run fast (production), 0=automatic, default value. $blade=new bladeone\BladeOne($views,$cache); echo $blade->run("hello",array("variable1"=>"value1"));
(按如下修改composer.json并运行 "composer update")
"autoload": { "psr-4": { "eftec\\": "vendor/eftec/" } }
其中 $views 是存储未编译视图(模板)的文件夹。$cache 是存储编译文件的文件夹。
在这个例子中,BladeOne打开了模板 hello。因此,在视图文件夹中应该存在一个名为 hello.blade.php 的文件
views/hello.blade.php
<h1>Title</h1> {{$variable1}}
业务逻辑/控制器方法
构造函数
$blade=new bladeone\BladeOne($views,$cache);
- BladeOne(templatefolder,compiledfolder) 创建BladeOne的实例。
- templatefolders 指示模板文件 (*.blade.php) 所在的文件夹(不带结尾反斜杠)。
- compiledfolder 指示保存文件结果的文件夹。此文件夹应具有写入权限。此外,此文件夹可以位于Web根目录之外。
运行
echo $blade->run("hello",array("variable1"=>"value1"));
- run([template,[array]) 运行模板并生成编译版本(如果需要),然后显示结果。
- template 是要打开的模板。点用于分隔文件夹。如果模板名为 "folder.example",则引擎尝试打开文件 "folder\example.blade.php"。
- array(可选)。指示模板要使用的值。例如 ['v1'=>10'],表示变量 $v1 等于 10。
BLADEONE_MODE(全局常量)(可选)
define("BLADEONE_MODE",1); // (optional) 1=forced (test),2=run fast (production), 0=automatic, default value.
- BLADEONE_MODE 是一个全局常量,它定义了引擎的行为。
- 1=强制。表示引擎始终会编译模板。
- 2=快速。表示引擎始终会使用编译后的版本。
模板标签
模板继承
在主页面(布局)中
使用主页面(使用布局)
注意:(*)此功能在原始文档中存在,但尚未实现且不是必需的。可能是一个过时的功能。
变量
逻辑
循环
子视图
注释
栈
@set(1.5版新增)
@set($variable=[value]) @set($variable) 等于 @set($variable=$variable+1)
- $variable 定义要添加的变量。如果没有定义值,则将其添加 +1 到变量。
- value(可选)定义要使用的值。
服务注入
扩展 Blade
与 Laravel 的 Blade 扩展不兼容。
扩展库(可选)
Blade 模板定义
https://laravel.net.cn/docs/5.2/blade
##Blade 和 BladeOne 的区别
- Laravel 的扩展已删除。
- 删除了对其他类别的依赖(约 30 个类)。
- 引擎是自包含的。
- 移除了 Setter 和 Getters。相反,我们使用 PHP 风格(公共成员)。
- BladeOne 不支持静态调用。
Blade+Laravel 和 BladeOne+BladeOneHTML 的区别
例如,使用 Laravel 函数,而不是 Form::select
{{Form::select('countryID', $arrayCountries,$countrySelected)}}
我们有本地标签,如 @select、@item、@items 和 @endselect
@select('countryID')
@item('0','--Select a country--',$countrySelected)
@items($arrayCountries,'id','name',$countrySelected)
@endselect()
这种新的语法添加了一个(可选的)非选中行。此外,BladeOneHTML 还添加了多选、固定值(没有数组)、分组选择等。
##待办事项
一些功能缺失,存在错误或未测试,但基本功能是正常工作的。已完成@each 可以进行优化。已完成原始 Blade 代码中有几个未记录的功能的标签。已完成- 扩展 BladeOne 打开了一个充满机遇的世界。- ~~ 可能将来会有一个 bladeone-bootstrap3 类。~~ 已完成
加快编译模板的加载速度。已完成
##版本
- 2016-06-08 0.2 版本。首次发布。
- 2016-06-09 1.0 版本。大多数工作完成。添加了扩展和错误控制。
- 2016-06-09 1.1 一些微调。
- 2016-06-10 1.2 新更改。添加了命名空间(用于自动完成和与 composer 兼容)
- 2016-06-12 1.3 大量清理。我删除了一些未使用的参数。我修复了 BladeOne 中强制执行的问题。我将文档按扩展分开。
- 2016-06-24 1.4 更新扩展。现在它使用 strut 而不是类。添加了新的扩展 BladeOneCache。
- 2016-07-03 1.5 新功能,如 @set 命令
- 2016-08-14 1.6 一些清理。添加了新的文档
=======
##合作
欢迎使用它,分享它,要求更改以及您想做的任何事情。只需保留文件中的版权声明。
##未来 我检查了 BladeOne 的代码,我知道有许多改进的空间。
##许可证 MIT 许可证。BladeOne(c)2016 Jorge Patricio Castro Castillo Blade(c)2012 Laravel Team(此代码基于并使用 Laravel 团队的工作。)
