澳门威利斯人_威利斯人娱乐「手机版」

来自 威利斯人娱乐 2020-02-03 07:31 的文章
当前位置: 澳门威利斯人 > 威利斯人娱乐 > 正文

artisan命令翻译,给thinkphp5增加同时生成model和附

运用Eloquent ORM是tp官方最为推荐的,可是每一遍手动复制文件极度麻烦,而纵然框架提供生成空文件的本子命令,可是在现实定制项目里含义十分的小,并且为了规范和减弱耦合,需求在model和controller之间在投入二个过渡层,那也是tp官方以致其它包罗lavarel在内主流框架开垦者的眼光,项目大中间文件需求做成接口形式以标准支出,要是项目此中恐怕小,则无需这么麻烦,直接生成一个service服务持续钦命的model就足以了。1.先希图model模板因为model直接和表映射,因而能够通过传表名一直生成,遵照框架规划,直接把命令放在make模块下

1 cmd 张开Computer命令窗口

##artisan

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

2 目录切换成网址根目录

usage 用法

2.在准备文件生成类

3 输入指令:php artisan serve

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

<?php namespace thinkconsolecommandmake;use thinkconsolecommandMake;use thinkApp;use thinkConfig;use thinkconsoleCommand;use thinkconsoleInput;use thinkconsoleinputArgument;use thinkconsoleOutput;/** * 生成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 数据迁移:(1State of Qatar新建数据库生成命令: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", ];

      (2卡塔尔国在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过期密码重新设置令牌

本文由澳门威利斯人发布于威利斯人娱乐,转载请注明出处:artisan命令翻译,给thinkphp5增加同时生成model和附

关键词: 澳门威利斯人 日记本 文件 附属 功能