公司框架规范是数据库表的字段都为大写字母,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;
}