热搜:NVER node 开发 php

仿照laravel 的phpqrtisan写了个类似的php cli 功能

2024-07-26 10:55:01
仿照laravel 的phpqrtisan写了个类似的php cli 功能

RT

GITHUB资源

PHP CLI 实现快速创建表 仿照ARTISAN 的QUICK

#!/usr/bin/env php -q      //声明PHP文件<?php/** * Created by PhpStorm. * User: gewenrui * Date: 16/1/11 * Time: 上午7:37 */require_once __DIR__.'/kakoi/Creator/Creator.class.php';$obj = new Creator();/*传入的参数    1,modle      创建MODEL    2,controller 创建CONTROLLER    3,migrate    同步数据库*/$input  = $_SERVER["argv"][1];@$status = $_SERVER["argv"][2];$obj->input($input,@$status);//echo __DIR__;//require_once

快速创建model层(php quick model Message)

<?php/** * Created by PhpStorm. * User: gewenrui * Date: 16/1/11 * Time: 上午9:03 */class model{    //内容    public function __construct($table)    {        $this->content =        $content =            "<?phpclass $table{      public function create(){            }        }";        $path = $this->create($table);        $this->write($path);    }    public function create($table)    {        $path = __DIR__ . '/Tables/' . $table . '.class.php';        //创建文件        if (!is_file($path)) {            touch($path, 0777, true);            return $path;        } else {            return $path;        }    }    //写入    public function write($path)    {        if (is_file($path)) {            $myfile = fopen($path, "w") or die("Unable to open file!");            fwrite($myfile, $this->content);        }    }}

数据库声明类型界面

<?php/** * Created by PhpStorm. * User: gewenrui * Date: 16/1/11 * Time: 上午11:12 */class Migration{    /*     *     * 设置类型     * */    public function String($data,$digit = 10)    {        $this->$data = "varchar($digit)";        return $this;    }    public function Int($data,$digit =10)    {        $this->$data = "int($digit)";        return $this;    }    public function date($data)    {        $this->$data = 'date';        return $this;    }    public function autoincrement($data)    {        $this->$data = $this->$data . '|primary key auto_increment';    }    public function index()    {        //return $this;    }    public function table($data)    {        $this->table = $data;    }}

创建model层(php quick model Message)

<?phprequire_once dirname(__DIR__) . '/Migration.class.php';class Message extends Migration{    public function create(Migration $migration)    {        $migration->table('Message');        $migration->Int('id',10)->autoincrement('id');        $migration->String('name',10);        $migration->String('password',10);        return $migration;    }}

执行页面

<?php/** * Created by PhpStorm. * User: gewenrui * Date: 16/1/11 * Time: 上午9:03 */require_once dirname(__DIR__) . '/DB/DB.class.php';class migrate extends \kakoi\DB{    public function __construct($table)    {        $data = $this->serach();        $value = require_once './Event/Config/Config.php';        static $db;        $db = new \kakoi\DB($value);        $this->load($data);    }    //search    public function serach()    {        $path = __DIR__ . '/Tables';        $dir = opendir($path);        global $value;        //扫描文件夹下的数据        while (($file = readdir($dir)) !== false) {            if ($file != '.' && $file != '..') {                $data = explode('.', $file);                $value .= $data[0] . '|';            }        }        return $value;        closedir($dir);    }    //数据处理    public function load($data)    {        $data = rtrim($data, '|');        $data = explode('|', $data);        foreach ($data as $value) {            require_once __DIR__ . '/Tables/' . $value . '.class.php';            $value = new $value();            $data = $value->create(new Migration());            $this->handle($data);        }    }    /*public function loop($key){        global $data;        if(strpos($key,'|')){            $value = explode('|',$key);        }    }*/    //数据处理*2    public function handle($data)    {        global $case;        //因为字段信息通过“xx|xx” 来传递 如果出现了 INT(10)|AUTO_INCREMENT 通过下面的方法来便利取出值          foreach ($data as $value => $key) {            if ($value != 'table') {                $count = substr_count($key, '|');                if ($count > 0) {                    $temp = explode('|', $key);                    $key = '';                    $length = count($temp);                    for ($i = 0; $i < $length; $i++) {                        $key .= $temp[$i] . '   ';                    }                }                $case .= $value . '   ' . $key . ',';            }        }        //去掉最后的逗号        $case = rtrim($case, ',') . ')';        $temp = "create table {$data->table}(";        $sql = $temp . $case;        $record = migrate::execute($sql);        if ($record == false) {            echo "{$data->table}创建失败了=";        } else {            echo "{$data->table}创建成功了=";        }        unset($case);        // echo $sql;    }}