Php 我可以在Laravel之外使用刀片模板引擎吗?

Php 我可以在Laravel之外使用刀片模板引擎吗?,php,design-patterns,frameworks,blade,Php,Design Patterns,Frameworks,Blade,我想创建一个设计模式,并使用“刀片模板引擎”。 我可以在Laravel之外使用刀片模板引擎,并在我的新模式中使用它吗?当然可以,packagist上有很多独立刀片选项,只要你对composer感到满意,那么应该没有问题,因为与下载相比,明星的比例非常高,看起来非常有趣 请注意,虽然我自己没有尝试过,但我和你一样,我正在为我自己的项目寻找一个独立的选项,并且遇到了它,我会给它一个真正好的锻炼,尽管在不久的将来的某个时候,是的,你可以在任何你喜欢的地方使用它。只需安装composer上提供的众多软件

我想创建一个设计模式,并使用“刀片模板引擎”。
我可以在Laravel之外使用刀片模板引擎,并在我的新模式中使用它吗?

当然可以,packagist上有很多独立刀片选项,只要你对composer感到满意,那么应该没有问题,因为与下载相比,明星的比例非常高,看起来非常有趣


请注意,虽然我自己没有尝试过,但我和你一样,我正在为我自己的项目寻找一个独立的选项,并且遇到了它,我会给它一个真正好的锻炼,尽管在不久的将来的某个时候,

是的,你可以在任何你喜欢的地方使用它。只需安装composer上提供的众多软件包中的一个即可

如果您对将其与codeigniter集成感兴趣,我会在这里发布一篇博客文章,概述此过程:

按照上述步骤应该可以清楚地知道如何将其包含到任何框架中。

记录如下:

我测试了许多库来在Laravel之外运行blade(我不使用),大多数库都是原始库的拙劣黑客,它们只是简单地复制和粘贴代码并删除了一些依赖项,但它保留了Laravel的许多依赖项

因此,我(为一个项目)为blade创建了一个替代方案,使其免费(MIT许可证,即关闭源代码/专用代码)位于一个文件中,并且不依赖于外部库。您可以下载该类并开始使用它,也可以通过composer进行安装

它100%兼容,没有Laravel自己的功能(扩展)

工作原理:

<?php
include "lib/BladeOne/BladeOne.php";
use eftec\bladeone;

$views = __DIR__ . '/views'; // folder where is located the templates
$compiledFolder = __DIR__ . '/compiled';
$blade=new bladeone\BladeOne($views,$compiledFolder);
echo $blade->run("Test.hello", ["name" => "hola mundo"]);
?>

另一种选择是使用细枝,但我测试了它,我不喜欢它。我喜欢Laravel的语法,它接近ASP.NET MVC Razor


编辑:到目前为止(2018年7月),它实际上是唯一一个支持刀片5.6新功能而不支持Laravel的模板系统

马特·斯塔夫创建了一个完整的存储库,向您展示了如何直接在Laravel之外使用各种照明组件。我建议遵循他的例子,看看他的源代码

下面是在Laravel之外使用Laravel视图的index.php

你可以在它周围写一个自定义的包装器,这样你就可以把它叫做Laravel

use Illuminate\Container\Container;
use Illuminate\Events\Dispatcher;
use Illuminate\Filesystem\Filesystem;
use Illuminate\View\Compilers\BladeCompiler;
use Illuminate\View\Engines\CompilerEngine;
use Illuminate\View\Engines\EngineResolver;
use Illuminate\View\Engines\PhpEngine;
use Illuminate\View\Factory;
use Illuminate\View\FileViewFinder;

function view($viewName, $templateData)
{
    // Configuration
    // Note that you can set several directories where your templates are located
    $pathsToTemplates = [__DIR__ . '/templates'];
    $pathToCompiledTemplates = __DIR__ . '/compiled';

    // Dependencies
    $filesystem = new Filesystem;
    $eventDispatcher = new Dispatcher(new Container);

    // Create View Factory capable of rendering PHP and Blade templates
    $viewResolver = new EngineResolver;
    $bladeCompiler = new BladeCompiler($filesystem, $pathToCompiledTemplates);

    $viewResolver->register('blade', function () use ($bladeCompiler) {
        return new CompilerEngine($bladeCompiler);
    });

    $viewResolver->register('php', function () {
        return new PhpEngine;
    });

    $viewFinder = new FileViewFinder($filesystem, $pathsToTemplates);
    $viewFactory = new Factory($viewResolver, $viewFinder, $eventDispatcher);

    // Render template
    return $viewFactory->make($viewName, $templateData)->render();
}
然后,您可以使用以下命令调用它

view('view.name', ['title' => 'Title', 'text' => 'This is text']);

我还使用了他的另一个软件包:date。他是一个可靠的开发人员,imho。@MartinJJ有关于它对您的项目有多好的影响的更新吗?