soysudhanshu/katana 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

soysudhanshu/katana

Composer 安装命令:

composer require soysudhanshu/katana

包简介

Stadalone version of laravel Blade

README 文档

README

Tests Coverage Status

Katana is a lightweight library that enables you to render Laravel Blade templates in any PHP project, without needing the full Laravel framework. Katana encourages you to use new component syntax, however traditional Blade syntax is also supported for porting from other projects like BladeOne.

Katana uses .blade.php extension for templates, traditionally stored in /views directory but can be configured.

Comparison

Feature Katana BladeOne
Layouts Components 🟨
Layouts Template Inheritance
Control Structures
Loops
Conditional Class & Styles
Additional Form Attributes
Pipes 🟨

[!NOTE] Pipes are now natively supported in PHP 8.5.

Getting Starting

You can install the package via composer:

composer require soysudhanshu/katana

Usage

use Blade\Blade;

$blade = $blade = new Blade(__DIR__, __DIR__ . '/.cache');

echo $blade->render('hello', ['name' => 'Jhon Doe']);

Layouts

Template Inheritance - ✅

Template inheritance allows you to create layouts by defining a master template that can be extended by child templates.

{{-- layouts/app.blade.php --}}

<!DOCTYPE html>
<html>
    <head>
        <title>App Name - @yield('title')</title>
    </head>
    <body>
        <main>
            @yield('content')
        </main>
        <aside>
            @yield('sidebar')
        </aside>
    </body>
</html>
{{-- blog-post.blade.php --}}

@extends('layouts.app')

@section('title', 'Home Page')

@section('content')
    <article>
        <h1>Blog Post</h1>
        <p>This is the blog post content.</p>
    </article>
@endsection

@section('sidebar')
    @parent

    <h3>Related Posts</h3>
    <ul>
        <li>Post 1</li>
        <li>Post 2</li>
        <li>Post 3</li>
    </ul>
@endsection

Supported Directives

Directive Description Status
@extends Directive to extend layout
@yield Outputs a section content
@section Defines a section content
@endsection Defined a end of section content
@show Outputs a section content immediately
@parent Outputs the content of the parent section
@hasSection Determines if section content has been defined
@sectionMissing Determines if section content is missing

Feature List

Blade Directives

Directive Description Status
{{ $var }} Display the value of the variable
{!! $var !!} Display the value of the variable without escaping
@{{ $var }} Escaping blade directive
@{!! $var !!} Escaping unsafe output directive
@@<any> Escaping control blade directive
@verbatim Prevents rendering.

Control Structures

Directive Description Status
@if If statement
@unless Convenient if
@isset Checks if variable is set
@empty Check if the variable is empty
@switch Switch statement
@case Case statement
@default Default statement
@break Break statement
@continue Continue statement

Loops

Directive Description Status
@for For loop
@foreach Foreach loop
@while While loop
@forelse Forelse loop
$loop Loop variable in the for loop (basic)

Conditional Class & Styles

Directive Description Status
@class Conditional class
@style Conditional style

Components

Directive Description Status
@component
@slot
Class components
Anonymous component
Vendor Namespacing
Component Attributes
Short hand attribute syntax
Attribute Render Escaping
Component Methods
{{ $attributes }}
{{ $attributes->merge() }}
{{ $attributes->class() }}
{{ $attributes->class() }} Conditional
{{ $attributes->prepends() }}
{{ $attributes->filter() }}
{{ $attributes->whereStartsWith() }}
{{ $attributes->whereDoesntStartWith() }}
{{ $attributes->whereDoesntStartWith()->first() }}
{{ $attributes->has() }}
{{ $attributes->hasAny() }}
{{ $attributes->get() }}
Default {{ $slot }}
Name slots {{ $customSlot }}
$slot->isEmpty()
$slot->hasActualContent()
Scoped Slots
Slot Attributes
Dynamic Components
Anonymous Index Components

Directives

Directive Description Status
@auth
@guest
@production
@env
@include
@session
@selected
@checked
@disabled
@readonly
@required
@includeIf
@includeWhen
@includeUnless
@includeFirst
@each
@once
@push
@stack
@pushOnce
@prependOnce
@php
@use

soysudhanshu/katana 适用场景与选型建议

soysudhanshu/katana 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 133 次下载、GitHub Stars 达 6, 最近一次更新时间为 2024 年 06 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 soysudhanshu/katana 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 soysudhanshu/katana 我们能提供哪些服务?
定制开发 / 二次开发

基于 soysudhanshu/katana 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 133
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-06-27