The php command line generates the entry file of the application according to the template The php command line generates the project structure

Then this article php command line to generate project structure Continue to transform: 

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";

The generated entry file is interpreted according to this template, and the variables in the template are read from 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 ) );
            //Introducing the namespace with use does not need to add the namespace to instantiate the class every time 
            $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 );
        }

    }

application:

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$ 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325069007&siteId=291194637