Artisan 是 Laravel 的命令行接口的名称,它提供了许多实用的命令来帮助你开发 Laravel 应用,它由强大的 Symfony Console 组件所驱动。
自定义命令默认存储在 app/Console/Commands
目录中,当然,只要在 composer.json
文件中的配置了自动加载,你可以自由选择想要放置的地方。
若要创建新的命令,你可以使用 make:console
Artisan 命令生成命令文件:
php artisan make:console SendEmails
上面的这个命令会生成 app/Console/Commands/SendEmails.php
类,--command
参数可以用来指定调用名称:
php artisan make:console SendEmails --command=emails:send
代码示例:
<?php
namespace App\Console\Commands;
use App\Store\AdminStore;
use App\Tools\Common;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Validator;
/**
注册超级管理员命令
Class CreateAdministrator
@package App\Console\Commands
-
@author 李景磊
*/
class CreateAdministrator extends Command
{
// 生明变量
protected $signature = "administrator:create";// 声明变量
protected $description = "创建后台超级管理员";// 声明变量
protected static $adminStore;// 依赖注入
public function __construct(AdminStore $adminStore)
{
self::$adminStore = $adminStore;
parent::__construct();
}public function handle()
{
// 创建管理员
self::create();
}/*
*创建管理员-
*/
public function create()
{
// 接收数据
$email = $this->ask('请输入邮箱');
$password = $this->ask('请输入密码');// 显示接收的数据在控制台
$this ->info('邮箱:'.$email);
$this ->info('密码:'.$password);// 判断是否注册
if ($this->confirm('确认注册吗?')){
$this->info('正在注册...');// 获取接收到的数据 $data = [ 'email' => $email, 'password' =>$password ]; // 参数验证规则 $validator = Validator::make($data,[ 'email' =>'required|email|min:6|max:64', 'password' =>'required|min:6|max:128', ]); // 验证是否是合法数据 if ($validator->fails()) { $errors = $validator->errors(); $this->table(['错误'],(array) $errors->toArray()); self::create(); return ; } // 判断邮箱是否以注册 $emailRes = self::$adminStore->getOneData(['email' => $email,'status' => 1 ]); if (!empty($emailRes)) { $this->error('已注册,请更换邮箱!'); self::create(); return; } // 拼接数据 $data['guid'] = Common::getUuid(); $data['password'] = Common::cryptString($data['email'], $data['password']); $data['sroce'] = 1; $data['status'] = 1; $data['addtime'] = $_SERVER['REQUEST_TIME']; // 写入数据库 $res = self::$adminStore->addData($data); // 判断是否注册成功 if (!empty($res)) { $this->info('注册成功'); }else{ $this->error('注册失败'); self::create(); }
}else{
$this->info('取消注册');
}
}
}
记得在Kernel.php中引用下面这句话;
Commands\CreateAdministrator::class,
-
在store层写方法
第一个方法(查找一条数据)
public function getOneData($where , $id = '')
{
if (empty($where)) {
return false;
}
if (empty($id)) {
return DB::table(self::$table)->where($where)->first();
}
return DB::table(self::$table)->where($where)->where('guid','!=',$id)->first();
}
第2个方法(添加到数据库)
public function addData($data)
{
if (empty($data)) {
return false;
}
return DB::table(self::$table)->insert($data);
}