iankibet/laravel-streamline 问题修复 & 功能扩展

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

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

iankibet/laravel-streamline

Composer 安装命令:

composer require iankibet/laravel-streamline

包简介

A package that allows front end to interact with backend without the need for routes and controller

README 文档

README

Latest Version on Packagist Total Downloads

laravel-streamline is a powerful backend package that allows your frontend (Vue/React) to interact directly with "Stream" classes in Laravel without the need for manual routes, controllers, or boilerplate API endpoints.

🚀 Key Features

  • Zero Routes: No need to define routes or controllers for every action.
  • Stateful Streams: Initial arguments are persisted across subsequent action calls, allowing for stateful backend logic.
  • Dependency Injection: Full support for Laravel's service container in constructors and methods.
  • Method Object Mapping: Pass objects from the frontend that automatically populate request() data and map to positional parameters.
  • Security First: Fine-grained permissions and validation via PHP attributes.
  • Privacy: Automatically filters out internal methods and properties from the frontend.

📦 Installation

composer require iankibet/laravel-streamline

Publish the config file:

php artisan vendor:publish --tag=laravel-streamline

⚙️ Configuration

The default configuration looks like this:

return [
    'class_namespace' => 'App\\Streams',
    'class_postfix' => 'Stream',
    'route' => 'api/streamline',
    'middleware' => ['auth:sanctum'],
    'guest_streams' => [
        'auth/auth'
    ],
    // Hides these properties from the frontend
    'exclude_properties' => [
        'rules', 'isTesting', 'authenticatedUser', 'requestData', 'action'
    ]
];

🛠 Basic Usage

1. Create a Stream class

php artisan make:stream TaskStream

2. Implement your logic

namespace App\Streams;

use Iankibet\Streamline\Stream;
use Iankibet\Streamline\Attributes\Validate;
use Iankibet\Streamline\Attributes\Permission;

class TaskStream extends Stream
{
    public $taskId;
    public $task;

    /**
     * Arguments passed during initialization in Vue (useStreamline)
     * are automatically injected here and persisted for all future actions.
     */
    public function __construct($taskId = null)
    {
        $this->taskId = $taskId;
        if ($taskId) {
            $this->task = Task::find($taskId);
        }
    }

    #[Permission('view-tasks')]
    public function onMounted()
    {
        // This is called when the stream is initialized on the frontend
        return $this->toArray();
    }

    #[Validate(['status' => 'required|string'])]
    public function updateStatus($status)
    {
        // Positional parameters can also be passed from objects!
        // service.updateStatus({status: 'completed'}) works too.

        $this->task->update(['status' => $status]);
        return ['success' => true];
    }
}

🧙 Advanced Features

Persistent State

When you initialize a stream on the frontend: const { service } = useStreamline('task', 42);

The argument 42 is sent to the backend. For every subsequent call to service.someAction(), the backend automatically re-instantiates TaskStream(42) before executing someAction().

Method Object Mapping

You can pass objects to methods from the frontend: service.updateUser(123, { role: 'admin', note: 'Promoted' })

On the backend:

public function updateUser($userId, $role) {
    // $userId = 123
    // $role = 'admin' (automatically unwrapped from the object)
    // request('note') = 'Promoted'
}

Security & Privacy

  • Filtered Output: Only public properties are returned to the frontend.
  • Internal Protection: Standard internal properties and all method names are automatically hidden from the frontend response payload to prevent leaking logic.
  • Attributes: Use #[Permission('...')] and #[Validate([...])] for robust security.

🧪 Testing

Test your streams directly from the CLI:

php artisan streamline:test-stream TaskStream

📄 License

MIT

iankibet/laravel-streamline 适用场景与选型建议

iankibet/laravel-streamline 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.64k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 08 月 21 日, 在 PHP 生态内属于活跃度较高的组件。

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

围绕 iankibet/laravel-streamline 我们能提供哪些服务?
定制开发 / 二次开发

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

BUG 修复 & 性能优化

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

项目外包 & 长期维护

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

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

统计信息

  • 总下载量: 5.64k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

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

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-08-21