多手/过载

一个简化基于参数数量创建特性方法过载过程的工匠命令。

dev-master 2022-06-23 13:03 UTC

This package is auto-updated.

Last update: 2024-09-25 18:51:40 UTC


README

一个简化基于参数数量创建特性方法过载过程的工匠命令。

该包允许您快速为特性创建模板,基于这些模板可以实施通过参数数量过载方法的机制。

overload:create 命令接受两个参数: method(创建特性中使用的函数名)和 namespace(特性的命名空间,其中最后一段是特性的名称。所有特性都创建在 app 目录中,默认在 Traits\Overloads 子目录中,但是您可以通过在 .env 中设置 TRAITS_DIRECTORY 变量来设置自己的子目录。

所有新创建的特性生成的命名空间已包含 App\TRAITS_DIRECTORY 段落,因此在生成时无需指定这些参数。

对于每个命名空间,创建一个单独的特性,后缀为 Main。它连接相同命名空间的所有其他特性。生成每个新特性时,此文件将自动更新。

示例

php artisan overload:create test_func Test\TestOverload

获取生成的文件 TestOverload

<?php

namespace App\Traits\Overloads\Test;

trait TestOverload
{
    function test_func(...$args) 
    {
        switch(func_num_args())
        {
        /** Example
            case 0:
                echo 'no arguments';
                break;
            case 1:
                echo $args[0];
                break;
	    case 2:
		[0 => $param1, 1 => $param2] = $args;
                echo "$param1, $param2";
                break;
	    */
        }
    }
}

TestMain.php

<?php

namespace App\Traits\Overloads\Test;

trait TestMain 
{
	use TestOverload;
}

通过删除 test_func 方法中的注释,我们可以在任何项目模型中使用它,我们只需要使用单个特性 TestMain 来连接特性。

use App\Traits\Overloads\Test\TestMain;