
PHP YII2 在控制器内映射 Action 到其它动作 用于API多版本处理的一种方式
首先定义一个 RedirectAction 类。 class RedirectAction { protected $actionId; public function __construct($actionId) { $this->actionId = $actionId; } public function __invoke($id, \yii\base\Controller $controller) { return $controller->createAction($this->actionId); } } 接着在控制器内重写实现 actions() 方法,用于映射 Action ID => 实际的动作。 class Controller { public function actions() { return [ ‘foo’ => new RedirectAction(‘bar’), // 访问 `module/controller/foo` 将会被重定向至 `actionBar` 方法 // … ]; } public function …
PHP thinkphp6 多应用 API 版本控制
上图为目录结构图 方法一 route / app.php 文件内容 // api版本路由 Route::rule(‘:version/:controller’, ‘api/:version.:controller/index’); Route::rule(‘:version/:controller/:action’, ‘api/:version.:controller/:action’); 方法二 route / app.php 文件内容 $v = request()->header(‘version’); if ($v == null) $v = “v1”; Route::rule(‘:controller/:action’, ‘api/’.$v.’.:controller/:action’);
PHP thinkphp6 多应用 和 thinkphp5.1 路由使用小记
在thinkphp5.1中,控制API版本可以用 Route::get(‘api/:version/home’,’api/:version.Index/home’); 但是在 thinkphp6的多应用下不生效了 注意,这时 route 目录放在某个应用下,比如 放在 api 目录下 Route::rule(‘:version/:controller’, ‘api/:version.:controller/index’); Route::rule(‘:version/:controller/:action’, ‘api/:version.:controller/:action’);
未分类 阿里小号突然不能开机了阿里小号客服电话
阿里小号突然不能开机了,找不到他们的客服,搜索了半天 才找到的,在这里记录一下 10029 ,如果提示空号,需要加区号 0571-10029 本文只记录,不是官方途径,如果后期有改动以官方信息为准
PHP thinkphp中 数据库 迁移工具Migration
常用命令 migrate:run 更新 migrate:rollback 还原 -t 参数 还原到指定版本 think migrate:create Test 创建一个文件,文件名须采用驼峰命名法 首字母必须用大写 可用字段 数据库结构构造器包含了许多字段类型,供你构建数据表时使用: 命令 描述 Column::bigInteger(‘votes’); 相当于 BIGINT 型态。 Column::binary(‘data’); 相当于 BLOB 型态。 Column::boolean(‘confirmed’); 相当于 BOOLEAN 型态。 Column::char(‘name’, 4); 相当于 CHAR 型态,并带有长度。 Column::date(‘create_time’); 相当于 DATE 型态。 Column::dateTime(‘create_time’); 相当于 DATETIME 型态。 Column::decimal(‘amount’, 5, 2); 相当于 DECIMAL 型态,并带有精度与基数。 Column::enum(‘cho…
服务器 MySQL 批量 转换 数据库引擎
InnoBD 转 MyISAM SET @DATABASE_NAME = ‘数据库名称’; SELECT CONCAT(‘ALTER TABLE `’, table_name, ‘` ENGINE=MyISAM;’) AS sql_statements FROM information_schema.tables AS tb WHERE table_schema = @DATABASE_NAME AND `ENGINE` = ‘InnoDB’ AND `TABLE_TYPE` = ‘BASE TABLE’ ORDER BY table_name DESC; MyISAM 转 InnoBD SET @DATABASE_NAME = ‘数据库名称’; SELECT CONCAT(‘ALTER TABLE `’, table_name, ‘` ENGINE=InnoDB;’) AS sql_statements FROM information_schema.tables AS tb WHERE table_schema = @DATABASE_NAME AND `ENGINE` = ‘My…
PHP PHP 微型模板引擎的尝试
前言 前面做一个店铺装修的功能,自己尝试做一个微型的模板引擎来实现输出显示,然后查了资料,记录一下重点部分 要点 解析好的模板文件必须写入到某个文件里面,然后 require 那个文件 步骤 1. ob_start(); 开始截取输出 2. require 编译后的模板文件 3. $result = ob_get_clean(); 获取并清除输出的内容 代码 <?php namespace weixinend\libs; class MiniViewTemplate { /** * 模板文件路径 * @var string */ protected $viewPath; /** * 编译文件保存路径 * @var string */ protected $cachePath; /** * 模板文件后缀名 * @var string */ protected $viewFileSuffix = [‘.html’,’.php’]; /** * 保存渲染的变量 * @var array */ protected $vars = []; /** * 当前模板…
PHP php empty在自定义class时的问题
最近在做自定义类,在设置属性时,一个类已经写了下面代码 public function __set($name, $value) { $this->offsetSet($name, $value); } public function __get($name) { return $this->offsetGet($name); } 但是用 empty 判断时,竟然返回 true 经过网上查找资料,了解到 empty 触发的不是 __get 方法,而是触发 __set 加上下面的代码即可 public function __isset($name){ return $this->offsetExists($name); } 补充一下,该类实现了 ArrayAccess
后端 MySQL 表结构生成 Markdown 文档工具mysql_markdown
背景 在实施软件工程的时候,当要将某一版本归档时,需要汇总的文档要求还是比较高的、各类文档齐全,包括项目架构、项目安装、接口等文档,而数据库表结构说明文档亦属于其一。记得很早之前想找一个可以导出 MySQL 数据库表结构说明文档的工具,生态上的这种工具是有的、只不过并没有一个使我比较满足的。当然、看个人所需,我需要一个可以导出 markdown 文档的。 于是 找到了 mysql_markdown 这个工具。它是一款基于 go 语言编写的一个命令行工具,适用于 Linux、Mac、Windows 等平台。那么它可以做什么?他只有一个功能、就是生成数据库表结构说明文档,格式为 markdown。 GitHub地址 简单用法 # 帮助函数 ➜ mysql_markdown -h flag needs an argument: -h Usage: mysql_markdown [options…] –help This help text -h host. default 127.0.0.1 -u username. default root -p password. default …
PHP PHP里面使用ReflectionClass小记
ReflectionClass 是 PHP里面的反射类,传入类名可以解析整个类,方便我们做高级操作,下面记录使用遇到的坑 $className = ‘Test’; // 判断类是否存在 if(!class_exists($className)) { // 报错 } $rc = new \ReflectionClass($className); // 判断方法是否存在 if (!$rc->hasMethod($actionName)) { // 报错 } // 获取到方法 $method = $rc->getMethod($actionName); // 判断当前方法是否为 public if (!$method->isPublic()) { // 报错,不是 public 方法不能 invoke } // 实例化,非静态方法,必须实例化,不然调用错误 // 静态方法 invoke 使用方法 $classObj 这里 换成 null // $method->invoke($classObj, $param); // 多个参数时,使用 invokeArgs 方法 /…
PHP PHP使用枚举Enum
使用到的库 https://github.com/myclabs/php-enum 具体代码 <?php —- # 1.定义 Enum 部分 namespace Type; require ‘./vendor/autoload.php’; class ArticleTypeEnum extends \MyCLabs\Enum\Enum { const GENERAL = 1; const JOB = 2; const DISCUSS = 3; const SHARE = 4; const COURSE = 5; const LIFE = 6; const SPECIAL_COLUMN = 7; } —- # 2.定义方法部分 function createArticle(array $data, ArticleTypeEnum $articleTypeEnum){ // 创建对应的类型的文章 } —- # 3.调用部分 try{ testTypeEnum($data, ArticleTypeEnum::GENERAL()); }catch (\Exception $e…
PHP 支付宝沙箱的一个坑,提交订单时使用同一个相同的订单号会报系统繁忙
昨天在用支付宝沙箱进行测试,忘记修改商家订单号了,居然报“系统繁忙”的错误,搞了半天,然后想想是不是改一下商家订单号,测试后居然可以了,坑。
PHP Yii2 数据库查询用法及数据排序
近期学习和使用了YII,收集一下一些基础的用法 User::find()->all(); 此方法返回所有数据; User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子); User::find()->where([‘name’ => ‘小伙儿’])->one(); 此方法返回 [‘name’ => ‘小伙儿’] 的一条数据; User::find()->where([‘name’ => ‘小伙儿’])->all(); 此方法返回 [‘name’ => ‘小伙儿’] 的所有数据; User::find()->orderBy(‘id DESC’)->all(); 此方法是排序查询; User::findBySql(‘SELECT * FROM user’)->all(); 此方法是用 sql 语句查询 user 表里面的所有数据; User::findBySql(‘SELECT * FROM user’)->one(); 此方法是用 sql 语句查询 user 表里面的一条数据;…
服务器 MySQL 的 InnoDB 数据库的增量备份方案(1) – XtraBackup
原因: 原来每天都做数据备份,一般都是用的全量备份,现在数据库太大,全量非常影响性能,所以在网上找了一些办法,就找到了 XtraBackup 这个工具 前提: MySQL数据库,InnoDB 引擎 使用: 增量备份: [root@master backups]# innobackupex –user=root –password=123456 –host=127.0.0.1 /backups/ #全备数据 [root@master ~]# mysql -uroot -p #在master上创建student库并创建testtb表插入若干数据 Enter password: mysql> create database student; Query OK, 1 row affected (0.03 sec) mysql> use student; Database changed mysql> create table testtb(id int); Query OK, 0 rows affected (0.07 sec) mysql>…


VMware15 安装 mac OS 10.15 调整分辨率

Quartz MySQL Specified key was too long; max key length is 767 bytes

阿里小号突然不能开机了阿里小号客服电话

VMware 安装 Mac os时必要操作

WordPress出现Briefly unavailable for scheduled maintenance. Check back in a minute. 的解决方法

Linux shell 通过环境变量方式启动golang 程序记录

制作一个包含PHP、MySQL、Redis、swoole、swoole_loader的docker镜像

golang 适配器模式 简单示例记录
