php脚本 命令行输入项目数据库表名 自动生成lib 配合公司框架使用

公司框架规范是数据库表的字段都为大写字母,lib对应数据库的字段变量是小写,写个php小脚本 实现 自动创建lib库 实现基础增删改差功能,避免重复工作及对lib中数据库字段的频繁大小写的折磨!

# 使用方法 
php newLib.php 数据库表名 lib名称

newLib.php

#!/usr/bin/php
<?php
include_once './server/application/config/db_config.php';
include_once './server/core/db/mysqli/mysqli_api.php';
$db = new CO_DB_mysqli_api('default',$db_config['default']);
if(count($argv)<3){
   $msg=<<<eof
       至少需要2个参数
       ***********************
       用法:php $argv[0] 数据库表名 lib名称 
   eof;
   echo $msg.PHP_EOL;
   return false;
}

$dir = './server/lib/Forestry/';
$fileName = ucfirst($argv[2]);  // 文件名首字母变为大写
$table = $argv[1];              // 表名
$primaryKey = '';               // 主键
$fieldArrB = [];                // 字段大写数组
$fieldArrS = [];                // 字段小写数组
$sql = 'select column_name from information_schema.columns where table_schema = "forestry" and table_name = ?';
$data = $db->query($sql,[$argv[1]]);
$sql1 = 'select column_name from INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` where table_schema = "forestry" and table_name = ? and constraint_name="PRIMARY"';
$data1 = $db->query($sql1,[$argv[1]]);
if($data){
   foreach ($data as $k => $v) {
       array_push( $fieldArrB, $v['column_name'] );
       array_push( $fieldArrS, strtolower($v['column_name']) );
   }
}else{
   echo $argv[1]."不存在".PHP_EOL;
   return false;die;
}
if($data1){
   $primaryKey = $data1[0]['column_name'];
}else{
   echo $argv[1]."主键错误".PHP_EOL;
   return false;die;
}

// 将文件写入当前目录
CreateDir($dir);
$st = file_put_contents($dir.$fileName.'.php' ,templete($fileName,$table,$primaryKey,$fieldArrB,$fieldArrS));

echo $st?'生成成功!':'生成失败!';

function CreateDir($dir, $authority=0755){
   if(!file_exists($dir)){
       CreateDir(dirname($dir));
       mkdir($dir, $authority);
   }
   return true;
}

// 结合co框架使用的lib模版文件
function templete($fileName,$table,$primaryKey,$fieldArrB,$fieldArrS){
   $str = '<?php'.PHP_EOL;
   $str .= '/**'.PHP_EOL;
   $str .= ' *'.PHP_EOL;
   $str .= ' *    '.$fileName.PHP_EOL;
   $str .= ' *'.PHP_EOL;
   $str .= ' * @package'.PHP_EOL;
   $str .= ' * @author			B.I.T'.PHP_EOL;
   $str .= ' * @copyright		Copyright (c) 2013 - 2019.'.PHP_EOL;
   $str .= ' * @license'.PHP_EOL;
   $str .= ' * @link'.PHP_EOL;
   $str .= ' * @since			Version 1.19'.PHP_EOL;
   $str .= ' */'.PHP_EOL;
   $str .= 'class '.$fileName.' extends FS_DataForm{'.PHP_EOL;
   $str .= '    /*******异常常量*********/'.PHP_EOL;
   $str .= '    const _err_msg_invalid_id = \'无效的id\';'.PHP_EOL;
   $str .= '    const _err_code_invalid_id = \'10001\';'.PHP_EOL;
   $str .= '    const _err_msg_invalid_land_id = \'无效的数据\';'.PHP_EOL;
   $str .= '    const _err_code_invalid_land_id = \'10002\';'.PHP_EOL;
   $str .= PHP_EOL;
   $str .= '    /*******表数据表变量*****/'.PHP_EOL;
   foreach ($fieldArrS as $k => $v) {
       $str .= '    public $'.$v.';'.PHP_EOL;
   }
   $str .= PHP_EOL;
   $str .= PHP_EOL;
   $str .= '    //数据表'.PHP_EOL;
   $str .= '    protected static $_co_dataform_table = \''.$table.'\';'.PHP_EOL;
   $str .= PHP_EOL;
   $str .= '    //主键'.PHP_EOL;
   $str .= '    protected static $_co_dataform_main_key = \''.$primaryKey.'\';'.PHP_EOL;
   $str .= PHP_EOL;
   $str .= '    //数据字段'.PHP_EOL;
   $str .= '    protected static $_co_dataform_field = array('.PHP_EOL;
   foreach ($fieldArrB as $k => $v) {
       $str .= '        \''.$v.'\','.PHP_EOL;
   }
   $str .= '    );'.PHP_EOL;
   $str .= PHP_EOL;
   $str .= '    /**'.PHP_EOL;
   $str .= '     * 构造函数'.PHP_EOL;
   $str .= '     * @param unknown_type $sid'.PHP_EOL;
   $str .= '     * @throws FS_Exception'.PHP_EOL;
   $str .= '     */'.PHP_EOL;
   $str .= '    function __construct($sid)'.PHP_EOL;
   $str .= '    {		'.PHP_EOL;
   $str .= '    	$this->_co_dataform_main_key_value = $sid;'.PHP_EOL;
   $str .= '    	if($this->_CODataformLoad() && $this->_load()){'.PHP_EOL;
   $str .= '    		$this->sid = $sid;'.PHP_EOL;
   $str .= '    	}else{'.PHP_EOL;
   $str .= '    		throw new FS_Exception(self::_err_msg_invalid_id, self::_err_code_invalid_id);'.PHP_EOL;
   $str .= '    	}'.PHP_EOL;
   $str .= '    }'.PHP_EOL;
   
   $str .= '    /**'.PHP_EOL;
   $str .= '     * 表字段名'.PHP_EOL;
   $str .= '     */'.PHP_EOL;
   $str .= '    protected function _load(){'.PHP_EOL;
   foreach ($fieldArrB as $k => $v) {
       $str .= '        $this->'.$fieldArrS[$k].' = $this->GetProp(\''.$v.'\');'.PHP_EOL;  
   }
   $str .= '        return true;'.PHP_EOL;
   $str .= '    }'.PHP_EOL;
   
   $str .= '    /**'.PHP_EOL;
   $str .= '     * 新增数据'.PHP_EOL;
   $str .= '     * @param array $data'.PHP_EOL;
   $str .= '     * @throws FS_Exception'.PHP_EOL;
   $str .= '     */'.PHP_EOL;
   $str .= '    static function Add($data){'.PHP_EOL;
   $str .= '        $ins = parent::_CODataformAdd( $data );'.PHP_EOL;
   $str .= '    	 if($ins === false){'.PHP_EOL;
   $str .= '    	     //数据有误'.PHP_EOL;
   $str .= '    		 throw new FS_Exception(self::_err_msg_invalid_land_id, self::_err_code_invalid_land_id);'.PHP_EOL;
   $str .= '    	 }else{'.PHP_EOL;
   $str .= '    		 return new static( $ins );'.PHP_EOL;
   $str .= '    	 }'.PHP_EOL;
   $str .= '    }'.PHP_EOL;
   
   $str .= '    /**'.PHP_EOL;
   $str .= '     * 更新数据'.PHP_EOL;
   $str .= '     * @param	data array 更新的数组'.PHP_EOL;
   $str .= '     * @return	boolean'.PHP_EOL;
   $str .= '     */'.PHP_EOL;
   $str .= '    function Update($data){'.PHP_EOL;
   $str .= '        return $this->_CODataformUpdate( $data ) && $this->_load();'.PHP_EOL;
   $str .= '    }'.PHP_EOL;
   
   $str .= '    /**'.PHP_EOL;
   $str .= '     * 删除数据'.PHP_EOL;
   $str .= '     * @return	boolean'.PHP_EOL;
   $str .= '     */'.PHP_EOL;
   $str .= '    function Delete(){'.PHP_EOL;
   $str .= '        return $this->_CODataformDelete();'.PHP_EOL;
   $str .= '    }'.PHP_EOL;
   $str .= PHP_EOL;
   $str .= '}'.PHP_EOL;
   $str .= '?>'.PHP_EOL;
   return $str;
}

   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值