php命令行按模板生成应用的入口文件
Posted ghostwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php命令行按模板生成应用的入口文件相关的知识,希望对你有一定的参考价值。
接着这篇文章php命令行生成项目结构 继续改造:
ghostwu@dev:~/php/php1/12$ tree . ├── app │ └── index.php ├── core │ ├── frame │ │ ├── ghost_frame.php │ │ └── template │ │ └── index.tpl │ └── ghostinit.php ├── function.php ├── ghost └── go.json
index.tpl:
<?php echo \'<?php\' . PHP_EOL; ?> /** * project name: <?php echo $proj . PHP_EOL; ?> * author: <?php echo $author . PHP_EOL; ?> * date: <?php echo date(\'Y-m-d\') . PHP_EOL; ?> * */ echo "hello ghostwu";
生成的入口文件就是按照这个 模板解释的, 模板中的变量从go.json读取
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 ) ); $gf->proj = trim( $conf->proj ); $gf->author = trim( $conf->author ); $gf->run(); } static function __callstatic( $m, $args ){ echo \'error function\'; } }
ghost_frame.php
namespace core\\frame; class ghost_frame{ public $proj = \'\'; public $entrace_file = \'\'; public function __construct( $proj ) { $this->proj = $proj; } public function run(){ $dir = getcwd() . \'/\' . $this->proj; !file_exists( $dir ) && mkdir( $dir ); extract( get_object_vars( $this ) ); ob_start(); include( dirname( __FILE__ ) . \'/template/index.tpl\' ); $content = ob_get_contents(); ob_end_clean(); file_put_contents( $dir . \'/index.php\', $content ); } }
应用:
ghostwu@dev:~/php/php1/12$ tree . ├── core │ ├── frame │ │ ├── ghost_frame.php │ │ └── template │ │ └── index.tpl │ └── ghostinit.php ├── function.php └── ghost 3 directories, 5 files ghostwu@dev:~/php/php1/12$ ./ghost init pls input project name? Application pls input author? ghostwu 45 bytes has written,config file has created ghostwu@dev:~/php/php1/12$ tree . ├── core │ ├── frame │ │ ├── ghost_frame.php │ │ └── template │ │ └── index.tpl │ └── ghostinit.php ├── function.php ├── ghost └── go.json 3 directories, 6 files ghostwu@dev:~/php/php1/12$ ./ghost start ghostwu@dev:~/php/php1/12$ tree . ├── Application │ └── index.php ├── core │ ├── frame │ │ ├── ghost_frame.php │ │ └── template │ │ └── index.tpl │ └── ghostinit.php ├── function.php ├── ghost └── go.json 4 directories, 7 files ghostwu@dev:~/php/php1/12$ cat Application/index.php <?php /** * project name: Application * author: ghostwu * date: 2018-04-29 * */ echo "hello ghostwu"; ghostwu@dev:~/php/php1/12$
以上是关于php命令行按模板生成应用的入口文件的主要内容,如果未能解决你的问题,请参考以下文章
vscode 用户代码片段 vue初始化模板 Snippet #新加入开头注释 自动生成文件名 开发日期时间等内容