PHP code example of crastlin / laravel-annotation_v2
1. Go to this page and download the library: Download crastlin/laravel-annotation_v2 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/ */
crastlin / laravel-annotation_v2 example snippets
namespace App\Http\Controllers\Portal;
use \Illuminate\Routing\Controller;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Route;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Route("index")]
function home()
{
// todo
}
}
namespace App\Http\Controllers\Portal;
use \Illuminate\Routing\Controller;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Route;
use Crastlin\LaravelAnnotation\Enum\Method;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Route("index", method: Method::POST)]
function home()
{
// todo
}
}
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("index")]
function home()
{
// todo
}
}
#[Group("api")]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("index")]
function home()
{
// todo
}
#[PostMapping("article")]
function news()
{
// todo
}
}
#[Group("api")]
#[Middleware([\App\Http\Middleware\Check::class, \App\Http\Middleware\ParamFilter::class])]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("index")]
function home()
{
// todo
}
#[PostMapping("article")]
function news()
{
// todo
}
}
#[Group("api", middleware: "checker")]
#[Domain("xxx.com")]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("index")]
function home()
{
// todo
}
#[PostMapping("article")]
function news()
{
// todo
}
}
#[ResourceMapping("product")]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller implements ResourceInterface
{
function index()
{
var_dump("=== is index cate ===");
}
function create()
{
var_dump("=== is create cate ===");
}
function store()
{
var_dump("=== is store cate ===");
}
function show(int $id)
{
var_dump("=== is show cate {$id} ===");
}
function edit(int $id)
{
var_dump("=== is edit cate {$id} ===");
}
function update(int $id)
{
var_dump("=== is update cate {$id} ===");
}
function destroy(int $id)
{
var_dump("=== is destroy cate {$id} ===");
}
}
#[Tree("首页")]
#[Controller]
class IndexController
{
#[Node("数据")]
#[PostMapping("data_list")]
function dataList()
{
// todo
}
#[Node("新闻")]
#[PostMapping("articles")]
function newsList()
{
// todo
}
}
#[Tree("首页")]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Node("数据")]
#[PostMapping("data")]
function dataList()
{
// todo
}
#[Node(name: "数据详情", parent: "dataList")]
#[PostMapping]
function detail()
{
// todo
}
#[Node("新闻")]
#[PostMapping("articles")]
function newsList()
{
// todo
}
#[Node("新闻详情", parent: "newsList")]
#[PostMapping("article")]
function news()
{
// todo
}
}
#[Tree("动物园")]
abstract class Animal extends \Illuminate\Routing\Controller
{
#[Node("主页", isMenuNode: true)]
#[PostMapping]
function index()
{
// todo
}
#[Node("观看时间", isMenuNode: true)]
#[PostMapping]
function schedule()
{
// todo
}
}
#[Tree("长颈鹿", preNamedSubMethods: "index,schedule")]
#[Controller]
class GiraffeController extends Animal
{
}
#[Tree("老虎", preNamedSubMethods: "index,schedule")]
#[Controller]
class TigerController extends Animal
{
}
#[Tree("首页")]
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Node("数据")]
#[PostMapping("data_list")]
function dataList()
{
// todo
}
#[Node("新闻")]
#[PostMapping("articles")]
function newsList()
{
// todo
}
#[SyncLock(suffix: "{post.id}")]
#[Node("更新", parent: "newsList")]
#[PostMapping]
function updateNews()
{
// todo
}
}
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Validation(field: "message",rule: "
namespace App\Http\Controllers\Portal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("submitMsg")]
function saveMessage(Request $request)
{
$validator = Validator::make($request->all(), [
'message' => '
namespace App\Validate;
use Crastlin\LaravelAnnotation\Extra\Validate;
class MessageCheck extends Validate
{
protected array $rules = [
"username" => ["
protected function checkSafeTags() :bool
{
if(str_contains($this->data['message'],'<script'))
return false;
return true;
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Extra\Validate;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Validation(class: \App\Validate\MessageCheck::class)]
#[PostMapping("submitMsg")]
function saveMessage()
{
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Extra\Validate;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("submitMsg")]
function saveMessage(Request $request)
{
$validate = Validate::make(\App\Validate\MessageCheck::class, $request->all());
if($validate->fails())
return ['code' => 500, 'msg' => $validate->errors()->first()];
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Extra\Validate;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("submitMsg")]
function saveMessage(Request $request)
{
$validate = new class extends Validate{
protected array $rules = [
"username" => [";
}
};
$validator = $validate->setData($request->all())->validate();
if($validator->fails())
return ['code' => 500, 'msg' => $validator->errors()->first()];
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Attributes\Validation\Required;
use Crastlin\LaravelAnnotation\Attributes\Validation\Regex;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[Required("username", attribute: "用户名")]
#[Regex("username", ruleValue: "~^\w+$~", attribute: "用户名")]
#[Required("message", attribute: "留言")]
#[PostMapping("submitMsg")]
function saveMessage()
{
// todo
}
}
namespace App\Http\Controllers\Portal;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
#[Controller]
class IndexController extends \Illuminate\Routing\Controller
{
#[PostMapping("submitMsg")]
function saveMessage(Request $request)
{
$validator = Validator::make($request->all(), [
'username' => ['
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Between;
use Crastlin\LaravelAnnotation\Extra\BaseController;
#[Controller]
class IndexController extends BaseController
{
#[PostMapping("submitMsg/{id}")]
function saveMessage(#[Between(ruleValue: "1,2")] int $id)
{
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Env;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Value;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Input\All;
use Crastlin\LaravelAnnotation\Extra\BaseController;
#[Controller]
class IndexController extends BaseController
{
// 环境配置注入
#[Env("APP_ENV")]
protected string env;
// config注入
#[Value("app.debug")]
protected bool $debug;
// 请求参数注入,还可以使用Input/Get/Post/Query等
#[All]
protected array $params;
#[PostMapping("submitMsg/{id}")]
function saveMessage()
{
// todo
}
}
namespace App\Http\Middleware;
use Crastlin\LaravelAnnotation\Facades\Injection;
use Closure;
use Illuminate\Http\Request;
class TokenCheck
{
function handle(Request $request, Closure $next)
{
// var_dump('===== is Token Middleware ====');
Injection::bind('params', $request->all());
Injection::bind('header.token', $request->header("token"));
return $next($request);
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Extra\BaseController;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Inject;
#[Controller]
class IndexController extends BaseController
{
#[Autowired]
protected array $params;
#[Inject("header.token")]
protected string $token
#[PostMapping("submitMsg/{id}")]
function saveMessage()
{
// todo
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Extra\BaseController;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Inject;
#[Controller]
class IndexController extends BaseController
{
#[PostMapping("submitMsg/{id}")]
function saveMessage(#[Autowired] array $params, #[Inject("header.token")] string $token)
{
// todo
}
}
namespace App\Http\Middleware;
use Crastlin\LaravelAnnotation\Facades\Injection;
use Closure;
use Illuminate\Http\Request;
class TokenCheck
{
function handle(Request $request, Closure $next)
{
// var_dump('===== is Token Middleware ====');
Injection::bind('params', $request->all());
$token = $request->header("token");
Injection::bind('header.token', $token);
$userId = TokenAuth::getUserId($token);
$user = User::find($userId);
if(!$user)
return response()->json(['code' => 400, 'msg' => '用户不存在']);
Injection::bind('model.user', $user);
return $next($request);
}
}
namespace App\Service;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Inject;
use Crastlin\LaravelAnnotation\Extra\ResponseCode;
use Crastlin\LaravelAnnotation\Utils\Traits\SingletonTrait;
use Crastlin\LaravelAnnotation\Utils\Traits\InvokeTrait;
use App\Model\User;
class UserService
{
use SingletonTrait, InvokeTrait;
#[Inject("model.user")]
protected ?User $user;
function updateAvatar(#[Autowired] string $avatar): bool
{
var_dump($this->user);
$this->user->avatar = $avatar;
$this->user->save();
$this->resCode = ResponseCode::SUCCESS;
return true;
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Numeric;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Required;
use Crastlin\LaravelAnnotation\Extra\BaseController;
use Crastlin\LaravelAnnotation\Facades\Injection;
use App\Service\UserService;
#[Controller]
class UserController extends BaseController
{
#[Autowired]
protected array $params;
#[Required("user_id")]
#[Numeric("user_id")]
#[PostMapping("updateAvatar")]
function updateAvatar()
{
return $this->callService(UserService::class, 'updateAvatar');
}
}
namespace App\Service\Impl;
use App\Service\UserService;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Service;
use Crastlin\LaravelAnnotation\Extra\BaseImplement;
#[Service]
class User extends BaseImplement implements UserService
{
#[Inject("model.user")]
protected ?User $user;
function updateAvatar(#[Autowired] string $avatar = ''): bool
{
var_dump($this->user);
$this->user->avatar = $avatar;
$this->user->save();
$this->resCode = ResponseCode::SUCCESS;
return true;
}
function myOrders(): bool
{
// todo
return true;
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Numeric;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Required;
use Crastlin\LaravelAnnotation\Extra\BaseController;
use Crastlin\LaravelAnnotation\Facades\Injection;
use App\Service\UserService;
#[Controller]
class UserController extends BaseController
{
#[Autowired]
protected UserService $userService;
#[Required("user_id")]
#[Numeric("user_id")]
#[PostMapping("updateAvatar")]
function updateAvatar()
{
if(!$this->userService->updateAvatar()){
var_dump($this->userService->getError());
var_dump($this->userService->getResCode());
}else{
var_dump($this->userService->getResult());
}
}
}
namespace App\Http\Controllers\Portal;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Autowired;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Qualifier;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Numeric;
use Crastlin\LaravelAnnotation\Annotation\Attributes\Validation\Required;
use Crastlin\LaravelAnnotation\Extra\BaseController;
use Crastlin\LaravelAnnotation\Facades\Injection;
use App\Service\UserService;
#[Controller]
class UserController extends BaseController
{
#[Autowired]
#[Qualifier(\App\Service\Impl\User::class)]
protected UserService $userService;
#[Required("user_id")]
#[Numeric("user_id")]
#[PostMapping("updateAvatar")]
function updateAvatar()
{
if(!$this->userService->updateAvatar()){
var_dump($this->userService->getError());
var_dump($this->userService->getResCode());
}else{
var_dump($this->userService->getResult());
}
}
}