PHP code example of callmecsx / mvcs
1. Go to this page and download the library: Download callmecsx/mvcs library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
callmecsx / mvcs example snippets
// 名字空间,由config.common.C.namespace 和 指令 model 决定
namespace $[controller_ns];
// 引用基类,没有基类返回空
$[controller_use]
// 如果构建包含包括 S(service)模板,则注入此块
@{S}use $[service_ns]\$[service_name];@{/S}
// 引用laravel类
use Illuminate\Http\Request;
$[controller_traits_head]
#{controller_hook_head} 头部扩展锚点
/**
* $[controller_name]
*
* @author $[author_info]
* @version $[main_version]
* @since $[sub_version]
*/
class $controller_name $controller_extends
{
// 根据 config.tags.foo 的返回值控制哪个块显示
@{foo:a}
protected $foo = 'fooA';
@{foo}
protected $foo = 'foo';
@{!foo}
protected $bar = 'bar';
@{/foo}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request, $[service_name] $service)
{
$result = $service->list($request->all());
return response()->json($result);
}
// 根据config.traits 和指令行参数 加载额外代码块
$[controller_traits_body]
#{controller_hook_body} 内部扩展锚点
}
// 每套扩展可能有多个文件,以 reply/controller 文件为例
// 双@@ 在行首,表示锚点,替换内容为 $[controller_traits_head]
// 扩展模式下 mvcs:append 替换内容为 #{controller_hook_head}
@@head
use App\Base\Code;
@@body
/**
* teacher reply
*
* @param Request $request
* @param int $id
* @return void
* @author $author_info
* @since $sub_version
*/
public function reply(Request $request,$id) {
$params = $request->input() ?: [];
// 扩展文件同样可以使用预定的值和标签写法
// 在扩展模式下,少部分原生内置的值不再提供,如:validator_rule、model_fillable 等
$[validator_name]::reply($params);
$info = $[model_name]::findOrfail($id);
$info->reply = $params['reply'];
$info->reply_teacher = $params['reply_teacher'];
$res = $info->save();
if (!$res) {
return $this->error(Code::FATAL_ERROR);
}
return $this->success([]);
}
return [
/* 使用前请务必阅读 readme 文件 */
// 版本信息
'version' => '3.1',
// 语言包,目前只有这一个包。
'language' => 'zh-cn',
/* 模板相关配置 */
// 模板风格
'style' => 'api', // 默认风格
'table_style' => 'single', // 表名风格, 只支持plural 和 single
// 模板全局替换参数
'global_replace' => [
'author_info' => env('AUTHOR', 'foo <[email protected] >'),
'main_version' => '1.0',
'sub_version' => '1.0.' . date('ymd'),
'create_date' => date('Y-m-d H:i:s')
],
// 替换类, 须实现替换类
'replace_classes' => [
Callmecsx\Mvcs\Impl\ExampleReplace::class,
],
// 替换参数标识
'replace_fix' => '$[ ]',
// 扩展模式下扩展名的前后缀,可以没有后缀,可在style中自定义
'hook_fix' => '#{ }',
// 标签功能标志
'tags_fix' => '@{ }',//单空格分割前后缀
'tags' => [
// 支持不同标签嵌套,同名嵌套会报错
// @{foo} xxx @{!foo} yyy @{/foo} 返回为空 yyy保留 返回true xxx保留
// @{style:api} xxx @{style:web} yyy @{/style} api xxx保留 返回web yyy保留 返回其他 全部块删除
'authcheck' => false,
'softdelete' => function ($columns) {
foreach ($columns as $column) {
if ($column->Field == 'deleted_at') {
return true;
}
}
return false;
},
'base' => true,
],
// 表中不该用户填充的字段
"ignore_columns" => ['id', 'created_at', 'updated_at', 'deleted_at'],
/* 自动添加路由配置 */
// 是否自动添加路由
"add_route" => true,
// 路由类型,加到那个文件里
"route_type" => 'api',
// 添加路由数组
"routes" => [
// 方法 -> 路由
'post' => [
// 'foo' => '{id}/foo',
],
// GET 路由等
'get' => [
'simple' => 'simple',
],
// 是否添加 apiResource?
'apiResource' => true,
// 是否添加 resource?
'resource' => false,
// 公共中间件,非全局
'middlewares' => [],
// 公共路由前缀
'prefix' => '',
// 公共名字空间,如使用 mvcs:make test/miniProgram 还会添加额外的一级名字空间 Test
'namespace' => '',
],
/* mvcs:excel 脚本相关参数 */
"excel" => [
// 公共额外数据库字段,migrate 写法
"extra_columns" => [
//'$table->integer("org_id")->comment("组织ID");',
'$table->timestamps();',
'$table->timestamp("deleted_at")->nullable();',
],
// 表名前缀
"table_prefix" => "",
// 表名后缀
"table_postfix" => "",
// 未定义varchar长度时的默认值。
"default_varchar_length" => 50,
// 未定义decimal 精度时的默认值。
"default_decimal_pre" => 10,
"default_decimal_post" => 2,
// EXCEL第三行,类型映射
"type_transfar" => [
"短句" => "string",
"字符串" => "string",
"网址" => "string",
"地址" => "string",
"邮箱" => "string",
"图片" => "string",
"多媒体" => "string",
"字符" => "string",
"枚举" => "enum",
"列举" => "enum",
"数字" => "integer",
"整数" => "integer",
"小数" => "decimal",
"文章" => "text",
"内容" => "text",
"时间" => "datetime",
"日期" => "date",
]
],
];