首页 > 其他分享 >自定义 make 脚本扩展 artisan make 命令

自定义 make 脚本扩展 artisan make 命令

时间:2023-06-29 14:35:58浏览次数:41  
标签:echo php 自定义 make EOL artisan PHP

有时候,我们想自定义生成 php 类文件,于是自己写了一个,能兼容去调用 artisan make 命令。文件名就叫 make  放在与 artisan 相同目录下,

命令: php make --help

代码如下:

#!/usr/bin/env php
<?php
if($argv[1] == '--help' || empty($argv[1])){
    echo 'php make <type> <filename> [<path>]' . PHP_EOL . PHP_EOL;
    echo 'php make test demo  ==> tests/DemoTest.php' . PHP_EOL . PHP_EOL;
    echo 'php make service demoService ==> app/Services/DemoService.php' . PHP_EOL . PHP_EOL;
    echo 'php make class app/Mail orderShipped ==> app/Mail/OrderShipped.php' . PHP_EOL . PHP_EOL;
    echo 'php make model User ==> php artisan make:model User' . PHP_EOL . PHP_EOL;
    exit(0);
}

function stop($value){
    var_dump($value);
    exit;
}


$content['test'] = <<<'hdoc'
<?php
namespace Tests;
<<<'doc'

doc;
class {name} extends TestCase 
{

    public function content()
    {
        
    }
    
    public function test()
    {
        
    }
    
}
hdoc;


$content['service'] = <<<'hdoc'
<?php
namespace App\Services;

class {name}  
{
    public function __construct()
    {
        
    }

}
hdoc;


$content['class'] = <<<'hdoc'
<?php
namespace {namespace};

class {name}  
{
    public function __construct()
    {
        
    }

}
hdoc;


if(key_exists($argv[1], $content)){

    $content = $content[$argv[1]];
    $name = ucfirst($argv[2]);
    $path = '';
    switch($argv[1]){

        case 'test' :
            $name .= 'Test';
            $path = 'tests';
            break;
        case 'service':
            $path = 'app/Services';
            break;
        case 'class':
            $name = $argv[3];
            $path = rtrim($argv[2], '/');
            $content = str_replace('{namespace}', ucfirst(str_replace('/', '\\', $path)), $content);
            break;
    }

    if(!is_dir($path)) {
        mkdir($path, 0777, true);
    }

    $file = "$path/$name.php";
    file_put_contents($file, str_replace('{name}', $name, $content));
    echo 'create: ' . $file . PHP_EOL;

}else{

    $cmd = $argv[1];
    $argv = implode(' ', array_slice($argv,2));
    echo `php artisan make:$cmd $argv`;

}

 

标签:echo,php,自定义,make,EOL,artisan,PHP
From: https://www.cnblogs.com/zbseoag/p/17514135.html

相关文章

  • cmake之configure_file指令
    [!note]需要知道最基本的cmake使用方法和命令。project、cmake_minimum_required、add_executable、target_include_directories等指令官网给的指令格式如下:```cmakeconfigure_file(<input><output>[NO_SOURCE_PERMISSIONS|USE_SOURCE_PERMISSIONS|......
  • elecrton 自定义关闭事件
     main.jsconst{app,BrowserWindow,Menu,ipcMain}=require('electron')constmainWindow=newBrowserWindow({webPreferences:{contextIsolation:false//必须有,不然报错}})//执行关闭自定义关闭ipcMain.on('handelClose'......
  • 前端Vue自定义简单通用省市区选择器picker地区选择器picker 收获地址界面模版
    前端Vue自定义简单通用省市区选择器picker地区选择器picker收获地址界面模版,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13266效果图如下:代码实现如下:cc-selectDity使用方法<!--省市区选择show:是否显示 @sureSelectArea:确认事件......
  • el-tree需要自定义双击事件触发选择节点
    单击事件onclick="xxxx"双击事件ondblclick="xxxx"<el-tree:data="data"@node-click="handleNodeClick"></el-tree>data(){return{numTime:0,}},methods:{//自定义双击事件handleNodeClick(......
  • 面向对象之魔术方法(内置方法),反射,异常之自定义异常
    魔术方法(内置方法)(面试题)#类里面内置的双下划线开头的一些方法,他们具有特殊的功能,我们称之为是魔术方法,简称魔法比如:__init__"""魔术方法的学习只需要掌握每个方法什么时候触发或者执行"""1.__str__,__repr__方法#__str__,__repr__方法classStudent():def_......
  • 用CMake 替换 Makefile
    原文:https://blog.csdn.net/love131452098/article/details/116241448CMake实质上是用于生成Makefile的工具,现在越来越多开源的项目,在项目的编译框架上使用CMake替换Makefile.CMake相对于Makefile规则更加简单,重要的是CMake官方网站提供了较为友好的指南.CMake官方学习资......
  • springboot 自定义异常 全局异常处理器
    创建自定义异常类,继承 RuntimeException类1publicclassCustomExceptionextendsRuntimeException{2publicCustomException(Stringmessage){3super(message);4}5}在指定情况下抛出该异常,代码如下: @ServicepublicclassCategoryServiceIm......
  • 完美,自定义View实现Dribbble上动感的Gallery App Icon 动画
    之前在dribbble看到一个很好看的动画效果,很想要,遂仿之。也为了练一下自定义控件,有段时间了,现在整理出来dribbble地址:https://dribbble.com/shots/4761564思路拆解一下,还是比较简单,需要绘制的有:圆形背景太阳(圆形)山(三角形)云朵(圆角矩形+三个圆)需要进行的动画:太阳-旋转动画山......
  • pyqt5:自定义信号实现/pyqt 打开网页/app.exec_()
    1、自定义信号  2、pyqt打开网页importwebbrowserwebbrowser.open('https://www.zhihu.com/question/23711222')3、app.exec_()与sys.exit(app.exec_())区别:app.exec_()#等待app主循环结束的,并在结束后执行后面行的程序#sys.exit(app.exec_())#起到等待主循环结束......
  • 前端Vue自定义手机号文本格式化组件手机号码文本转星号
    前端Vue自定义手机号文本格式化组件,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13231效果图如下:cc-format-phone使用方法<!--phone:手机号isStar:是否转星号--><cc-format-phone:phone="":isStar="false"></cc-format-phone>......