johntaa/blade

Laravel中的独立版本Blade模板引擎,仅用单个PHP文件

v1.0 2016-12-28 00:46 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:36:32 UTC


README

Logo

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 扩展不兼容。

扩展库(可选)

BladeOneHtml 文档

BladeOneLogic 文档

BladeOneCache 文档

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 团队的工作。)