Laravel ?? ?? ??? ??: ?? ?? ?? ? ?? ??? ???? ??
Nov 02, 2023 pm 04:28 PMLaravel? ????? ??????? ??? ??? ? ?? ??? ?? ?? ??? ?? ??? PHP ????????. ??? ?? ??? ?????? ?? ???? ?? ?? ?? ??? ???? ???? ?? ??? ??? ??? ??? ?? ? ????. ? ???? Laravel? ?? ?? ??? ????? ??? ??? ?? ??? ????? ? ?? ??? ???? ???? ?? ??? ?????.
??? 1: ?? ??
Laravel? ???? ??? ?? ? ??? ?? ??? ??? ??? ? ?? ?? ????? ?????. ?? ?? ??? ?? Laravel ?? ????? ???? ?? ???, ??? ?? ? ?? ????? ???? ???? ???? ?? ??? ???? ? ????.
?? ??? ?? Laravel ?? ????? ???? ?? ??:
$userPermissions = Cache::remember('user_permissions_'.$userId, 3600, function() use($userId) { // 獲取用戶對應(yīng)的權(quán)限信息 return User::find($userId)->permissions; }); if(in_array('admin', $userPermissions)){ //用戶擁有admin權(quán)限 }
? ????? Cache::remember ???? ???? ???? ?????. ??? ? ?? ????? ?? ? ???? ? ?? ????? ?????. ?? ??(???? 1???? ??), ? ?? ????? ???? ?? ?? ?? ?????. ??? ???? ??? ?? ??? ???? ??? ?????.
??? ???? ??? ?????? ??? ????, ?? ??? ?????, Laravel? ?? ?? ??? ????? ???? ? ????.
??? 2: ??? ?? ??
??? ??? ???? ?? ??? ??? ??? ???? ? ??? ??? ?? ???? ??? ??, ?? ? ??? ? ???? ???? ???? ???? ?????. ?? ?? ????? ??? ?? ??? ???? ???, ?? ? ?? ?? ??? ???? ??? ?? ????? ????? ?? ? ????.
??? ?? ??? ?? Laravel ??? ??? ???? ?? ?????.
1. ?? ??:
<?php namespace App; use IlluminateDatabaseEloquentModel; class User extends Model { public function permissions() { return $this->morphToMany('AppPermission', 'permissionable'); } } class Role extends Model { public function permissions() { return $this->morphToMany('AppPermission', 'permissionable'); } } class Permission extends Model { public function users() { return $this->morphedByMany('AppUser', 'permissionable'); } public function roles() { return $this->morphedByMany('AppRole', 'permissionable'); } }
2. ??? ?? ??? ?? ??:
$user = User::find($userId); $userPermissions = $user->permissions; if($userPermissions->contains('name', 'admin')){ //用戶擁有admin權(quán)限 }
? ????? ???? ???? ? ?? ??? ??????. , ?? ? ?? ?? ?? ????? morphedByMany ???? ???? ???? ??? ?? ??? ??? ? ??? ??? ??? ?????. ??? ?? ??? ??? ??? ? ??? ?? ??? ?? ??? ?? ????? ?? ?? ??? ?? ??? ?? ??? ?? ? ????.
??? 3: ??? ???
Laravel? ??? ?? ? ??? ?? ??? ? ?? ??? ?? ??? ?????. ??? ???? ?? ???? ?? ???? ???? ???? ?? ??? ??? ?? ? ????. . ?? ?? ????? ???? ????? ?? ???? ???? ??? ??? ???? ? ????.
??? ?? ?? ????? ?? ?????.
$user = User::find($userId); //獲取用戶對應(yīng)的所有角色 $rolesRawSql = "SELECT r.* FROM roles r, role_user ru WHERE r.id = ru.role_id AND ru.user_id = ?"; $userRoles = DB::select($rolesRawSql, [$user->id]); $roleIds = collect($userRoles)->pluck('id')->toArray(); //獲取所有角色對應(yīng)的權(quán)限 $permissionsRawSql = "SELECT p.* FROM permissions p, permission_role pr WHERE p.id = pr.permission_id AND pr.role_id IN (".implode(',', array_fill(0, count($roleIds), '?')).")"; $rolePermissions = DB::select($permissionsRawSql, $roleIds); $permissionNames = collect($rolePermissions)->pluck('name')->toArray(); if(in_array('admin', $permissionNames)){ //用戶擁有admin權(quán)限 }
? ????? ?? SQL ?? ?? ???? ??????. ?? ??? ?? ??? ??? ???? ?? Laravel?? ???? ??? ???? ??? ???. ?? ??? ????? ??.
??? 4: ??? ??? ??? ???? ??
??? ??? ??? ???? ?? ?? ??? ?? ????? ??? ??? ?? ??? ???? ? ????. ?? ???? ???? ??? ??? ???? ???, ?? ? ?? ?? ??? ???? ???? ?? ??? ??? ? ????.
??? ?? ??? ?? ?? ? ??? ??? ???? ?? ?????.
1. ?? ?? ??:
<?php namespace App; use IlluminateDatabaseEloquentModel; class Permission extends Model { public function roles() { return $this->morphedByMany('AppRole', 'permissionable'); } public function users() { return $this->morphedByMany('AppUser', 'permissionable'); } /** * 獲取緩存中的權(quán)限數(shù)據(jù) * * @return mixed */ public static function allPermissions() { return Cache::rememberForever('permissions', function () { return Permission::all(); }); } }
2 ??? ?? ?? ? ??? ?? ??:
$user = User::find($userId); $userPermissions = $user->permissions; $allPermissions = Permission::allPermissions(); foreach($userPermissions as $permission){ if($allPermissions->contains('id', $permission->id) && $allPermissions->where('id', $permission->id)->first()->name === 'admin'){ //用戶擁有admin權(quán)限 } }
?? ???? ??? ?? ???? ?? ?? ?? ??? allPermissions ???. ??? ???? ?? ?? ???????? ?? ???? ??? ??? ?????. ?? ??? ??? ? ?? ???? ?? ??? ?? ?? ??? ???? ?? ??? admin?? ??? ??? ??? ? ????. ???? ????? ??? ??? ??? ?????.
??
? ???? ?? ??, ??? ?? ??, ??? ???, ??? ??? ?? ?? ?? ? Laravel? ?? ?? ??? ????? ? ?? ??? ?????. ??? ??? ???? ??? ?? ??? ????? ???? ??? ??? ???? ? ????. ?? ????? ?? ?? ??? ??? ??? ?? ??? ??? ??? ???? ???? ?? ??? ?? ??? ? ????.
? ??? Laravel ?? ?? ??? ??: ?? ?? ?? ? ?? ??? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP?? ?? ??? ???? ? ?? ?? ??? ????. 1. php.ini? ?? ??? ??; 2. ? ?? (? : Apache? Setenv ?? nginx? FastCGI_Param)? ??????. 3. PHP ?????? putenv () ??? ??????. ? ??? Php.ini? ????? ??? ???? ??? ???? ? ?? ??? ?? ???? ????? ???? Putenv ()? ?? ??? ?????. ?? ???? ?? ?? (? : php.ini ?? ? ?? ??)? ???? ????. ?? ?? ??? ??? ?? ??? ????? ???? ?? ????.

Laravel? ?? ??? ?? ?? ??? ?? ?? ??? ???? ??? ??????. ?? ???? ?? ??? ????? ? ???? I/O ?? ? ?? ?? ??? ???? ???? ??? ?? ? ????. 1. ?? ????? ?? ? ? ???????? ??? ????? ?? ???? ??????. 2. ??? ? ??? ?? ? ? PhPartisAnconfig? ?? ???????. 3. ?? ??? ??? ??? ???? ?? ?? ?? ???? ???? ????. 4. ?? ?? ??? ???? ?? ??? ??? .env ??? ???? ?? ???????.

PHP ????? ?? ??? ??? ? ??? ??? CI (Continuous Integration) ????? ???? ? ????. 1. DockerFile? ???? ?? ???, ?? ??, ??? ?? ? ?? ??? ???? PHP ??? ?????. 2. Gitlabci? ?? CI/CD ??? ???? .gitlab-ci.yml ??? ?? ??, ??? ? ?? ??? ???? ?? ??, ??? ? ??? ?????. 3. PHPUNIT? ?? ??? ??? ??? ???? ?? ?? ? ???? ???? ????????. 4. Kubernetes? ?? ?? ?? ??? ???? ?? .yaml ??? ?? ?? ??? ?????. 5. Dockerfile ??? ? ??? ??? ??????

??? ?? ??? PHP ???? ?? ?? ??? ???? ?? ???????. RBAC (Role-Based Access Control) ??? ?? ???, ?? ? ??? ???? ??? ?? ?? ? ??? ?????. ?? ???? ??? ?????. 1. ???, ?? ? ??? ? ???? user_roles ? role_permissions? 3 ?? ?? ???; 2. $ user-> can ( 'edit_post')? ?? ???? ?? ?? ??? ?????. 3. ??? ???? ??? ??????. 4. ?? ??? ???? ?? ?? ?? ? ??? ? ???? ???? ?? ??? ? ?? ??? ?????. 5. ??? ??? ?? ?? ???? ?? ???? "??"? ??????.

Laravel? eloquentscopes? ?? ??? ??? ??? ?????? ?? ?? ??? ????? ?????. 1. ?? ??? ???? ???? ???? ???? Post :: published (); 2. ??? ??? ?? ??? ???? ???? ?? ??? ?? ?? ?? ??? ???? ???? ??? ?????? ??? ???? ???????. 3. ????? ?? ?? ?? ??? ??? ?? ?? ??? ?? ? ? ??? ?? ? ? ?? ?? ??? ?????. 4. ?? ??? ? ??? ?? ???? ? ??? ? ?? ??, ?? ??, ?? ???? ? ?? ?????????.

CreateAhelpers.phpfileInapp/helperswithCustOmFunctionsikeFormatPrice, isactiveroute, andisAdmin.2.addTheFileTothe "??"sectionOfcomposer.jsonUnderAutoLoad.3.runcomposerDump-AUTOLOADTOMAKETHINGTICTIONSGLOBELYAVAILABLE.4.USETHEHELPERFUNCUNTION

?? ?? ?? : ?? ????? PHP? ?? Error_Log ()? ??? ? ????. ????? ???? ??? ?? ??? ?????? ???? ?? ??? ? ?? ??? ???? ??? ?? ???, ??, ?? ? ?? ? ?? ?? ??? ???? ??? ??????. 2. ??? ?? ?? : ??? ??? ??? ??? ? ??? ?? ??? ??? ?? ??? ??? ??????? ??????. MySQL/PostgreSQL? ???? ??? ? ???? ??????. Elasticsearch Kibana? ? ???/? ???? ?????. ???, ??? ?? ? ??? ? ?? ??? ?? ??????. 3. ?? ? ?? ????? : ??, ???, ?? ? ??? ??? ??????. Kibana? ?? ????? PHP ??? ?? ?? ?????? ???? ???? ?????? ???? ??? ? ?? ??? ??? ? ????.

??, ??, ?? ?? ? ?? ??? ???? ?? ??? ?? ? ?? ???? ?????. 2. ?? ???? ???? ?? ??? ??? SONGSTOMONY ? HASMANY ?? ??; 3. ?? ? ? ?? ? ?? ??? ????? (?? ???? ?? ??? ? ??). 4. ?? ? ?? ??? ???? ?? ??? ???? ?? ? ?? ??? ???? ?? ??? ?????. 5. ?? ???? ??? ?? (?? ??)? ???? ?? ????? ??????. 6. ?? ??? ?? ??? ???? Laravel Signature URL? ???? ??? ??????. 7. ? ?? ?? ? ? ?? ??? ?? ?? ??? ?? ??? ?????. ?????? ??, ?? ?? ??? ??????????.
