在任意PHP项目中使用Laravel Blade。

3.5.1 2024-05-27 13:51 UTC

README

Contributors Forks Stargazers Issues License PHP 8.2

Logo

Blade

在任意PHP项目中使用 Laravel Blade
如果您还不了解Blade,请参阅官方文档

报告错误 · 请求功能

要求

  • PHP ^7.4 | ^8.0
  • Composer

安装

composer require helsingborg-stad/Blade

使用

配置

缓存路径

  • 可以通过传递路径到BladeService构造函数来设置缓存路径。
  • 如果没有设置缓存路径,Blade Service将使用系统的临时目录。
  • 可以通过定义BLADE_CACHE_PATH环境常量来覆盖缓存路径。

初始化Blade引擎

这可以通过本地实例或全局可重用实例来完成。全局实例推荐以获得更好的性能和更少的内存使用。

本地

$viewPaths    = ['path/to/view/files'];
$cachePath    = 'path/to/cache/files';
$bladeService = new BladeService($viewPaths, $cachePath);

全局(方便重用)

$viewPaths    = ['path/to/view/files'];
$cachePath    = 'path/to/cache/files';
$bladeService = GlobalBladeService::getInstance($viewPaths, $cachePath);

// You can now reuse the same instance by calling:
$sameInstance = GlobalBladeService::getInstance($viewPaths, $cachePath);

注意

如果在使用GlobalBladeService::getInstance后调用带参数的函数,$viewPaths将被添加,而$cachePath参数将被忽略。

渲染视图

$viewFile = 'foo.blade.php';
$html     = $bladeService->makeView($viewFile)->render();

带有变量的视图渲染

$viewFile = 'foo.blade.php';
$html = $bladeService->makeView($viewFile, ['name' => 'John Doe'])->render();

使用特定的视图路径渲染

这允许您临时使用特定的视图路径,而无需将其存储在Blade Service中。

$viewFile = 'foo.blade.php';
$html = $bladeService->makeView($viewFile, ['name' => 'John Doe'], [], 'specific/view/path')->render();

注册自定义指令

$bladeService->registerDirective('datetime', function ($expression) {
    return "<?php echo with({$expression})->format('F d, Y'); ?>";
});

// The directive can now be used by adding the @datetime directive to a view file.

注册组件

$bladeService->registerComponent('foo', function ($view) {
    $view->with('name', 'John Doe');
});

// The component can now be used by adding @component('foo')@endcomponent to a view file.

注册组件指令

如果您已经注册了组件。该组件可以通过以下方式添加为指令:

$bladeService->registerComponentDirective('componentname', 'directivename');

// This will register a directive that can be used by adding @directivename()@enddirectivename to a view file, and it will output the component.

添加额外的视图文件路径

如果在初始化Blade Service之后需要添加更多视图文件路径,可以通过调用BladeService::addViewPath来完成。

$bladeService->addViewPath('extra/view/path');

预置视图文件路径

如果需要在现有视图文件路径之前添加更多视图文件路径,可以通过调用BladeService::prependViewPath并设置第二个参数为true来完成。

$bladeService->prependViewPath('extra/view/path', true);

重要

对于添加的每个唯一的视图路径,性能都会受到影响。这是由于Blade Service必须搜索所有视图路径以找到正确的视图文件。因此,建议添加尽可能少的视图路径。

错误处理

此包提供了一个方便的解决方案,用于迅速解决在视图函数中调用时出现的问题或文件中直接出现的语法错误。它提供了一个显示错误的功能,这在开发过程中非常有用。为了优化开发速度和效率,在调用makeView时实现错误处理程序,确保在出现错误时进行顺畅的故障排除。

try {
    return $bladeService->makeView($viewFile, ['name' => 'John Doe'], [], 'specific/view/path')->render();
} catch (Throwable $e) {
    $bladeService->errorHandler($e)->print();
}

测试

单元测试

composer test

代码覆盖率

composer test:coverage