给thinkphp5扩展而且生成model和直属服务文件成效,网址初建

应用Eloquent
ORM是tp官方最为推荐的,不过每一回手动复制文件充裕艰巨,而纵然框架提供生成空文件的台本命令,可是在现实定制项目里含义非常小,而且为了标准和减弱耦合,须要在model和controller之间在加盟叁个过渡层,那也是tp官方以致其余满含lavarel在内主流框架开垦者的观念,项目大中间文件须求做成接口情势以正规化支出,假如项目个中或然小,则无需这么费力,直接生成叁个service服务持续钦命的model就足以了。1.先准备model模板因为model直接和表映射,由此能够通过传表名一向生成,依据框架规划,直接把命令放在make模块下

1 cmd 打开Computer命令窗口

##artisan

 <?phpnamespace {%namespace%};use think\Model;class {%className%} extends Model{ protected $table = '{%tablename%}';}

2 目录切换成网址根目录

usage 用法

2.在预备文件生成类

3 输入指令:php artisan serve

comand [options] [arguments] 命令 选择 参数

<?php namespace think\console\command\make;use think\console\command\Make;use think\App;use think\Config;use think\console\Command;use think\console\Input;use think\console\input\Argument;use think\console\Output;/** * 生成model和service */class Ms extends Make{ const SERVICEERROR = '<error>this service already exists!</error>'; const MODELERROR = '<error>this model already exists!</error>'; const SERVICESUCCSESS = '<info>this service already successfully!</info>'; const MODELSUCCSESS = '<info>this model already successfully!</info>'; protected $tablename = ''; /** * 命令备注 * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] * @return [type] [description] */ protected function configure() { parent::configure(); $this->setName('make:ms') ->setDescription('Create a new model class and service class'); } /** * 生成文件 * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] * @param Input $input [description] * @param Output $output [description] * @return [type] [description] */ protected function execute(Input $input, Output $output) { $name = trim($input->getArgument; $this->tablename = self::get_name;//保存数据表名称 $this->namespace = App::$namespace.'\\'.str_replace($this->tablename,'',str_replace('/','\\',$name));//设置命名空间根路径 $this->file = str_replace($this->tablename,'',$name); // $classname = $this->getClassName; $classname = self::setHump($this->tablename);//转为驼峰模式 $this->input = $input; $this->output = $output; $this->createModel($classname);//生成model $this->createService($classname);//生成service } /** * 生成model文件 * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] * @param [type] $classname [类名] */ protected function createModel($classname) { if (!preg_match("/(Model|model)+$/",$classname)) { $classname .= "Model"; $this->serviceusespance = $this->namespace.'model\\'.$classname; } $pathname = APP_PATH.$this->file.'model/'.$classname.'.php'; if (is_file($pathname)) { $this->output->writeln(static::MODELERROR); return false; } if (!is_dir(dirname($pathname))) { mkdir(strtolower(dirname($pathname)), 0755, true); } file_put_contents($pathname, $this->buildClassModel($classname)); $this->output->writeln(static::MODELSUCCSESS); } /** * 生成service * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] * @param [type] $classname [类名] */ protected function createService($classname) { if (!preg_match("/(Service|service)+$/",$classname)) { $classname .= "Service"; } $pathname = APP_PATH.$this->file.'service/'.$classname.'.php'; if (is_file($pathname)) { $this->output->writeln(static::SERVICEERROR); return false; } if (!is_dir(dirname($pathname))) { mkdir(strtolower(dirname($pathname)), 0755, true); } file_put_contents($pathname, $this->buildClassService($classname)); $this->output->writeln(static::SERVICESUCCSESS); } /** * 读取model模板 * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] */ protected function getStub() { return __DIR__ . '/stubs/model2.stub'; } /** * 读取service模板 * Typecho Blog Platform * @copyright [copyright] * @license [license] * @version [version] */ protected function getServiceStub() { return __DIR__ . '/stubs/service.stub'; } /** * 生成model */ protected function buildClassModel { $stub = file_get_contents($this->getStub; $namespace = $this->namespace.'model'; return str_replace(['{%className%}', '{%namespace%}', '{%tablename%}'], [ $name, $namespace, $this->tablename ], $stub); } /** * 生成service专属,生成model的时候顺便生成附属service服务 */ protected function buildClassService { $stub = file_get_contents($this->getServiceStub; $namespace = $this->namespace.'service'; return str_replace(['{%className%}', '{%namespace%}', '{%usenamespace%}'], [ $name, $namespace, $this->serviceusespance ], $stub); } //将字符串转为驼峰模式 private static function setHump { if (false === stripos) { $str = ucfirst; } else { $strList = explode; $newStr = ''; foreach ($strList as $value) { $newStr .= ucfirst; } $str = $newStr; } return $str; } /** * 截取文件名称 */ private static function get_name { return substr($str,strrpos+1,(strlen-strrpos)); }}

4 model 生成命令:php artisan make:model 须求转移的model名称

options:

3.在配备命令调用,加上生成ms的授命

5 数据迁移:(1卡塔尔国新建数据库生成命令:php artisan make:migration
create_数据库表名_table –create=数据库表名

-h, –help 展现扶助新闻

private static $defaultCommands = [ "think\\console\\command\\Help", "think\\console\\command\\Lists", "think\\console\\command\\Build", "think\\console\\command\\Clear", "think\\console\\command\\make\\Ms", "think\\console\\command\\make\\Controller", "think\\console\\command\\make\\Model", "think\\console\\command\\optimize\\Autoload", "think\\console\\command\\optimize\\Config", "think\\console\\command\\optimize\\Route", "think\\console\\command\\optimize\\Schema", ];

      (2State of Qatar在database/migrations文件夹下方,生成的迁移文件中配备供给充实的字段,设置数据表的主键。

-q,–quiet 不要出口任何音讯

那样就足以选拔那一个行命令了

                     (3卡塔尔数据库迁移表生成命令:php artisan
migrate:install

-V,–version 呈现应用版本

图片 1TIM截图20181207083916.png

      (4)数据库表生成命令:php artisan migrate:refresh

–ansi  强迫ansi编码输出

应用方法如下php think make:ms
job/table_name,job为app模块下子模块名,table_name为表名。

      (5)增多数量表中的字段:php artisan make:migration
add_字段名_to_表名_table –table=表名

–no–ansi 不要ansi编码输出

      (6)改过数据表中的字段:php artisan make:migration
change_字段名_to_表名_table –table=表名

-n,–no–interaction 不要询问其余交互难点

 

–env[=ENV] 该命令运维的条件

-v|vv|vvv, –verbose 增添更详尽的出口 1,平日输出 2,更详实输出
3,调节和测量检验输出

#Available commands:

##实用的指令:

clear-compiled  删除编写翻译的类公事

down            应用步向维护方式

env            突显当前框架意况

help            呈现命令帮助新闻

list            命令详细列表

migrate        运营数据库迁移

optimize        优化框架拿到更加好的品质

serve          服务于PHP开荒服务器上的应用

thinker        与应用程序交互,也正是步向调节和测量检验orm

up              是应用程序退出保险形式

##app

app:name        设置使用命名空间

##auth

auth:clear-resets  auth过期密码重新恢复生机设置令牌

发表评论

电子邮件地址不会被公开。 必填项已用*标注