博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php命令行生成项目结构
阅读量:6235 次
发布时间:2019-06-22

本文共 5277 字,大约阅读时间需要 17 分钟。

ghostinit.php

$projName, 'author' => $author ] ); } static function buildConfig( $info ){ return file_put_contents( getcwd() . '/go.json', json_encode( $info ) ) . ' bytes has written,' . 'config file has created' . PHP_EOL; } static function show(){ $conf = self::loadConfig(); foreach( $conf as $k => $v ){ echo $k . ':' . $v; } } static function loadConfig(){ return json_decode( file_get_contents( getcwd() . '/go.json' ) ); } static function start(){ $conf = self::loadConfig(); $dir = getcwd() . '/' . trim( $conf->proj ); !file_exists( $dir ) && mkdir( $dir ); !file_exists( $dir . '/index.php' ) && file_put_contents( $dir . '/index.php', '' ); } static function __callstatic( $m, $args ){ echo 'error function'; } }?>

用法:

ghostwu@dev:~/php/php1/10$ lsghost  ghostinit.phpghostwu@dev:~/php/php1/10$ ./ghost initpls input project name?hellopls input author?ghostwustring(6) "hello"string(8) "ghostwu"39 bytes has written,config file has createdghostwu@dev:~/php/php1/10$ lsghost  ghostinit.php  go.jsonghostwu@dev:~/php/php1/10$ ./ghost startghostwu@dev:~/php/php1/10$ lsghost  ghostinit.php  go.json  helloghostwu@dev:~/php/php1/10$ tree hellohello└── index.php0 directories, 1 fileghostwu@dev:~/php/php1/10$
View Code

 

用类来单独改造

ghost_frame.php

proj = $proj; $dir = getcwd() . '/' . $proj; !file_exists( $dir ) && mkdir( $dir ); !file_exists( $dir . '/index.php' ) && file_put_contents( $dir . '/index.php', '' ); } }?>

ghostinit.php,由于调用了ghost_frame,需要在ghostinit.php中require这个文件

static function start(){              $conf = self::loadConfig();              $gf = new ghost_frame( trim( $conf->proj ) );         }

 当然我们可以用自动加载来改造

首先,建立框架的目录结构,类似于thinkphp( Library\Thinkphp.php )

ghostwu@dev:~/php/php1/10$ lscore  ghost  ghostinit.php  go.json  helloghostwu@dev:~/php/php1/10$ tree corecore└── frame    ├── ghost_frame.php    └── template
ghostwu@dev:~/php/php1/10$ tree.├── core│   └── frame│       ├── ghost_frame.php│       └── template├── ghost├── ghostinit.php├── go.json└── hello    └── index.php

完整的ghostinit.php

$projName, 'author' => $author ] ); } static function buildConfig( $info ){ return file_put_contents( getcwd() . '/go.json', json_encode( $info ) ) . ' bytes has written,' . 'config file has created' . PHP_EOL; } static function show(){ $conf = self::loadConfig(); foreach( $conf as $k => $v ){ echo $k . ':' . $v; } } static function loadConfig(){ return json_decode( file_get_contents( getcwd() . '/go.json' ) ); } static function start(){ $conf = self::loadConfig(); //$gf = new core\frame\ghost_frame( trim( $conf->proj ) ); //用use引入命名空间 就不需要每次都加上命名空间去实例化类 $gf = new ghost_frame( trim( $conf->proj ) ); } static function __callstatic( $m, $args ){ echo 'error function'; } }?>
View Code

ghost_frame.php

proj = $proj; $dir = getcwd() . '/' . $proj; !file_exists( $dir ) && mkdir( $dir ); !file_exists( $dir . '/index.php' ) && file_put_contents( $dir . '/index.php', '' ); } }?>
View Code

最后的改造:

ghostwu@dev:~/php/php1/11$ tree.├── core│   ├── frame│   │   ├── ghost_frame.php│   │   └── template│   └── ghostinit.php├── function.php├── ghost├── go.json└── hello    └── index.php

ghost:

1 #!/usr/bin/php 2 
= 2 ) { 8 $p = $argv[1]; 9 //如果以 '-' 开头, 表示属性10 if( substr( $p, 0, 1 ) == '-' ) {11 // -v变成v12 $p = substr( $p, 1 );13 $result = isset( ghostinit::$$p ) ? ghostinit::$$p : 'error';14 }else {15 $result = ghostinit::$p();16 }17 }18 19 echo $result . PHP_EOL;

ghostinit.php

namespace core;    use core\frame\ghost_frame;    class ghostinit{        static $v = 'ghost version is 1.1';        static function init(){            echo "pls input project name?" . PHP_EOL;            $projName = fgets( STDIN );            echo "pls input author?" . PHP_EOL;            $author = fgets( STDIN );                        echo self::buildConfig( [ 'proj' => $projName, 'author' => $author ] );        }        static function buildConfig( $info ){            return file_put_contents( getcwd() . '/go.json', json_encode( $info ) ) . ' bytes has written,' . 'config file has created' . PHP_EOL;        }        static function show(){            $conf = self::loadConfig();            foreach( $conf as $k => $v ){                echo $k . ':' . $v;            }        }        static function loadConfig(){            return json_decode( file_get_contents( getcwd() . '/go.json' ) );        }                static function start(){            $conf = self::loadConfig();            //$gf = new core\frame\ghost_frame( trim( $conf->proj ) );            //用use引入命名空间 就不需要每次都加上命名空间去实例化类            $gf = new ghost_frame( trim( $conf->proj ) );        }        static function __callstatic( $m, $args ){            echo 'error function';        }    }
View Code

 

转载地址:http://gpqna.baihongyu.com/

你可能感兴趣的文章
BBC 新闻数据可视化 Cookbook
查看>>
力扣(LeetCode)22
查看>>
一秒搭建gitbook
查看>>
react 与 Vue的一些比较
查看>>
vue-cli3环境变量与分环境打包
查看>>
前端爬坑之旅--echarts渲染时canvas变为100px
查看>>
C#中的Singleton模式
查看>>
git 常用命令
查看>>
在Windows下,用Hexo搭建博客
查看>>
Element组件引发的Vue中mixins使用,写出高复用组件
查看>>
【Linux系统编程】普通用户绑定(bind)特权端口
查看>>
Django搭建个人博客:文章标签功能
查看>>
63. Unique Paths II
查看>>
989-数组形式的整数加法
查看>>
Redis 源码分析之故障转移
查看>>
React as a UI Runtime(四、条件)
查看>>
阿里云MWC 2019发布7款重磅产品,助力全球企业迈向智能化
查看>>
使用Logtail采集Kubernetes上挂载的NAS日志
查看>>
电脑录音软件哪个好,怎么用电脑录音
查看>>
《前端十年-我将一切告诉你》人物关系图
查看>>