精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Claude Code PHP開發(fā)子代理實戰(zhàn)指南:打造你的現(xiàn)代PHP架構(gòu)師

開發(fā) 前端
今天要分享的是我精心調(diào)優(yōu)的PHP開發(fā)子代理——這個配置能讓Claude Code像一個精通現(xiàn)代PHP的資深架構(gòu)師,從Laravel到Symfony,從性能優(yōu)化到安全防護,幫你寫出企業(yè)級的PHP代碼。

今天要分享的是我精心調(diào)優(yōu)的PHP開發(fā)子代理——這個配置能讓Claude Code像一個精通現(xiàn)代PHP的資深架構(gòu)師,從Laravel到Symfony,從性能優(yōu)化到安全防護,幫你寫出企業(yè)級的PHP代碼。

一、為什么PHP開發(fā)需要專屬子代理?

1.1 PHP開發(fā)的獨特挑戰(zhàn)

PHP已經(jīng)不是10年前那個"簡單腳本語言"了,但很多人還在用老方式寫PHP:

// 場景對比:處理用戶登錄

// ? 通用Claude可能給你的代碼
<?php
$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($query);  // 已廢棄的函數(shù)!SQL注入風(fēng)險!

if (mysql_num_rows($result) > 0) {
    $_SESSION['logged_in'] = true;
    echo"Login successful";
}
// 問題:SQL注入、明文密碼、過時函數(shù)、沒有CSRF保護

// ? PHP子代理會給你的專業(yè)方案
<?php
declare(strict_types=1);

namespaceApp\Http\Controllers\Auth;

useApp\Models\User;
useApp\Http\Requests\LoginRequest;
useApp\Services\Auth\AuthenticationService;
useApp\Events\UserLoggedIn;
useIlluminate\Http\JsonResponse;
useIlluminate\Support\Facades\RateLimiter;
useSymfony\Component\HttpFoundation\Response;

finalclass LoginController extends Controller
{
    publicfunction __construct(
        private readonly AuthenticationService $authService
    ) {}

    /**
     * 處理用戶登錄請求
     * 
     * @param LoginRequest $request 驗證過的請求對象
     * @return JsonResponse
     * @throws \Throwable
     */
    publicfunction login(LoginRequest $request): JsonResponse
    {
        // 1. 速率限制檢查
        $key = 'login:' . $request->ip();
        if (RateLimiter::tooManyAttempts($key, 5)) {
            return response()->json([
                'message' => '登錄嘗試次數(shù)過多,請稍后再試',
                'retry_after' => RateLimiter::availableIn($key)
            ], Response::HTTP_TOO_MANY_REQUESTS);
        }

        try {
            // 2. 驗證憑據(jù)(自動處理密碼哈希驗證)
            $credentials = $request->validated();
            
            // 3. 嘗試認證
            $result = $this->authService->attempt(
                email: $credentials['email'],
                password: $credentials['password'],
                remember: $credentials['remember'] ?? false
            );

            if (!$result->success) {
                RateLimiter::hit($key, 300); // 5分鐘窗口
                
                return response()->json([
                    'message' => '郵箱或密碼錯誤',
                    'errors' => ['email' => ['認證失敗']]
                ], Response::HTTP_UNPROCESSABLE_ENTITY);
            }

            // 4. 清除速率限制
            RateLimiter::clear($key);

            // 5. 生成安全的會話/JWT令牌
            $token = $result->token;
            $user = $result->user;

            // 6. 觸發(fā)登錄事件(用于日志、通知等)
            event(new UserLoggedIn($user, $request->ip(), $request->userAgent()));

            // 7. 返回響應(yīng)(包含CSRF令牌)
            return response()->json([
                'message' => '登錄成功',
                'data' => [
                    'user' => $user->only(['id', 'name', 'email', 'avatar']),
                    'token' => $token,
                    'token_type' => 'Bearer',
                    'expires_in' => config('jwt.ttl') * 60
                ]
            ])->withHeaders([
                'X-CSRF-TOKEN' => csrf_token()
            ]);

        } catch (\Exception $e) {
            // 8. 錯誤處理和日志
            report($e);
            
            return response()->json([
                'message' => '登錄過程中發(fā)生錯誤,請稍后重試'
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }
}

// LoginRequest.php - 請求驗證
namespaceApp\Http\Requests;

useIlluminate\Foundation\Http\FormRequest;
useIlluminate\Validation\Rules\Password;

class LoginRequest extends FormRequest
{
    publicfunction authorize(): bool
    {
        returntrue;
    }

    publicfunction rules(): array
    {
        return [
            'email' => [
                'required',
                'email:rfc,dns',
                'max:255'
            ],
            'password' => [
                'required',
                Password::min(8)
                    ->mixedCase()
                    ->numbers()
                    ->symbols()
            ],
            'remember' => ['boolean'],
            'captcha' => ['required_if:failed_attempts,>,3', 'captcha']
        ];
    }

    publicfunction messages(): array
    {
        return [
            'email.required' => '請輸入郵箱地址',
            'email.email' => '請輸入有效的郵箱地址',
            'password.required' => '請輸入密碼',
            'captcha.required_if' => '多次失敗后需要驗證碼'
        ];
    }
}

1.2 PHP子代理解決的五大痛點

痛點類型

具體問題

子代理解決方案

安全漏洞

SQL注入、XSS攻擊

參數(shù)化查詢、自動轉(zhuǎn)義

性能問題

N+1查詢、內(nèi)存泄漏

預(yù)加載、生成器優(yōu)化

代碼質(zhì)量

混亂的代碼結(jié)構(gòu)

PSR標(biāo)準(zhǔn)、設(shè)計模式

過時寫法

使用廢棄函數(shù)

PHP 8.3+現(xiàn)代特性

測試缺失

沒有單元測試

PHPUnit完整覆蓋

1.3 通俗理解現(xiàn)代PHP

把PHP的發(fā)展比作汽車進化:

  • PHP 5時代 = 手動擋汽車(什么都要自己做)
  • PHP 7時代 = 自動擋汽車(性能翻倍,更易用)
  • PHP 8時代 = 智能汽車(JIT編譯、屬性、聯(lián)合類型)

PHP子代理幫你直接開上"智能汽車"。

二、PHP子代理配置完全解析

2.1 配置文件雙語版本

英文原版(推薦使用)

---
name: php-developer
description: Develop modern PHP applications with advanced OOP, performance optimization, and security best practices. Specializes in Laravel, Symfony, and high-performance PHP patterns. Use PROACTIVELY for PHP-specific optimizations and enterprise applications.
model: sonnet
---
You are a PHP development expert specializing in modern PHP 8.3+ development with focus on performance, security, and maintainability.

## Modern PHP Expertise
- PHP 8.3+ features (readonly classes, constants in traits, typed class constants)
- Advanced OOP (inheritance, polymorphism, composition over inheritance)
- Trait composition and conflict resolution strategies
- Reflection API and attribute-based programming
- Memory optimization with generators and SPL data structures
- OpCache configuration and performance tuning
- Composer dependency management and PSR standards
- Security hardening and vulnerability prevention

## Framework Proficiency
1. Laravel ecosystem (Eloquent ORM, Artisan commands, queues)
2. Symfony components and dependency injection container
3. PSR compliance (PSR-4 autoloading, PSR-7 HTTP messages)
4. Doctrine ORM with advanced query optimization
5. PHPUnit testing with data providers and mocking
6. Performance profiling with Xdebug and Blackfire
7. Static analysis with PHPStan and Psalm
8. Code quality with PHP CS Fixer and PHPMD

## Security and Performance Focus
- Input validation and sanitization with filter functions
- SQL injection prevention with prepared statements
- XSS protection with proper output escaping
- CSRF token implementation and validation
- Password hashing with password_hash() and Argon2
- Rate limiting and brute force protection
- Session security and cookie configuration
- File upload security with MIME type validation
- Memory leak prevention and garbage collection tuning

## Enterprise Development
- Clean architecture with domain-driven design
- Repository pattern with interface segregation
- Event sourcing and CQRS implementation
- Microservices with API gateway patterns
- Database sharding and read replica strategies
- Caching layers with Redis and Memcached
- Queue processing with proper job handling
- Logging with Monolog and structured data
- Monitoring with APM tools and health checks

Build PHP applications that are secure, performant, and maintainable at enterprise scale. Focus on modern PHP practices while avoiding legacy patterns and security vulnerabilities.

中文理解版(帶詳細注釋)

---
name: php-developer
description: 使用高級OOP、性能優(yōu)化和安全最佳實踐開發(fā)現(xiàn)代PHP應(yīng)用。專精Laravel、Symfony和高性能PHP模式。在PHP優(yōu)化和企業(yè)應(yīng)用時主動使用。
model: sonnet
---
你是一位PHP開發(fā)專家,專精現(xiàn)代PHP 8.3+開發(fā),專注于性能、安全和可維護性。

## 現(xiàn)代PHP專業(yè)技能 / Modern PHP Expertise
- PHP 8.3+特性(只讀類、trait中的常量、類型化類常量)
- 高級OOP(繼承、多態(tài)、組合優(yōu)于繼承)
- Trait組合和沖突解決策略
- 反射API和基于屬性的編程
- 使用生成器和SPL數(shù)據(jù)結(jié)構(gòu)進行內(nèi)存優(yōu)化
- OpCache配置和性能調(diào)優(yōu)
- Composer依賴管理和PSR標(biāo)準(zhǔn)
- 安全加固和漏洞預(yù)防

## 框架精通 / Framework Proficiency
1. Laravel生態(tài)系統(tǒng)(Eloquent ORM、Artisan命令、隊列)
2. Symfony組件和依賴注入容器
3. PSR合規(guī)(PSR-4自動加載、PSR-7 HTTP消息)
4. Doctrine ORM高級查詢優(yōu)化
5. PHPUnit測試與數(shù)據(jù)提供者和模擬
6. 使用Xdebug和Blackfire進行性能分析
7. 使用PHPStan和Psalm進行靜態(tài)分析
8. 使用PHP CS Fixer和PHPMD保證代碼質(zhì)量

## 安全和性能關(guān)注 / Security and Performance Focus
- 使用過濾函數(shù)進行輸入驗證和清理
- 使用預(yù)處理語句防止SQL注入
- 通過適當(dāng)?shù)妮敵鲛D(zhuǎn)義防止XSS
- CSRF令牌實現(xiàn)和驗證
- 使用password_hash()和Argon2進行密碼哈希
- 速率限制和暴力破解保護
- 會話安全和Cookie配置
- 使用MIME類型驗證的文件上傳安全
- 內(nèi)存泄漏預(yù)防和垃圾回收調(diào)優(yōu)

## 企業(yè)級開發(fā) / Enterprise Development
- 使用領(lǐng)域驅(qū)動設(shè)計的清潔架構(gòu)
- 帶接口隔離的倉儲模式
- 事件溯源和CQRS實現(xiàn)
- 帶API網(wǎng)關(guān)模式的微服務(wù)
- 數(shù)據(jù)庫分片和讀副本策略
- 使用Redis和Memcached的緩存層
- 適當(dāng)?shù)淖鳂I(yè)處理和隊列處理
- 使用Monolog和結(jié)構(gòu)化數(shù)據(jù)記錄日志
- 使用APM工具和健康檢查進行監(jiān)控

構(gòu)建安全、高性能、可維護的企業(yè)級PHP應(yīng)用。
專注于現(xiàn)代PHP實踐,同時避免遺留模式和安全漏洞。

2.2 核心概念通俗解釋

// 1. 什么是PHP 8.3+新特性?
// 只讀類 - 類的所有屬性自動只讀
readonly class User {
    publicfunction __construct(
        public string $name,
        public string $email
    ) {}
}

// 2. 什么是Trait?
// 就像"能力包",可以給類添加功能
trait Timestampable {
    public DateTime $createdAt;
    public DateTime $updatedAt;
    
    publicfunction touch(): void {
        $this->updatedAt = new DateTime();
    }
}

class Post {
    useTimestampable;  // 獲得時間戳能力
}

// 3. 什么是生成器?
// 省內(nèi)存的迭代方式
function readLargeFile($file) {
    $handle = fopen($file, 'r');
    while (!feof($handle)) {
        yield fgets($handle);  // 一次只讀一行
    }
    fclose($handle);
}

// 4. 什么是依賴注入?
// 不要在類內(nèi)部創(chuàng)建依賴,而是從外部傳入
class UserService {
    publicfunction __construct(
        private UserRepository $repository  // 注入依賴
    ) {}
}

三、5分鐘快速配置指南

步驟1:打開子代理管理

# 在Claude Code中輸入
/agents

步驟2:創(chuàng)建PHP專家

  1. 點擊 "Create New Agent"
  2. 選擇 **"User-level agent"**(全局可用)

步驟3:粘貼配置

選擇上面的英文版或中文版配置,完整粘貼

步驟4:配置工具權(quán)限

PHP開發(fā)需要的權(quán)限:

  • Read - 讀取PHP文件
  • Write - 創(chuàng)建新文件
  • Edit - 修改代碼
  • MultiEdit - 批量重構(gòu)
  • Bash - 運行composer和artisan命令

步驟5:選擇標(biāo)識顏色

建議選擇 ?? 紫色(PHP的標(biāo)志色),保存配置

四、實戰(zhàn)案例:PHP子代理的強大能力

案例1:構(gòu)建高性能RESTful API

輸入指令

創(chuàng)建一個商品管理的RESTful API,要考慮性能和安全

PHP子代理輸出

<?php
// app/Http/Controllers/Api/ProductController.php
declare(strict_types=1);

namespaceApp\Http\Controllers\Api;

useApp\Http\Controllers\Controller;
useApp\Http\Requests\Product\{StoreRequest, UpdateRequest};
useApp\Http\Resources\ProductResource;
useApp\Models\Product;
useApp\Services\ProductService;
useApp\Repositories\ProductRepository;
useIlluminate\Http\{JsonResponse, Resources\Json\AnonymousResourceCollection};
useIlluminate\Support\Facades\{Cache, DB};
useSymfony\Component\HttpFoundation\Response;

finalclass ProductController extends Controller
{
    publicfunction __construct(
        private readonly ProductService $productService,
        private readonly ProductRepository $productRepository
    ) {
        // 中間件配置
        $this->middleware('auth:sanctum');
        $this->middleware('throttle:api');
        $this->middleware('cache.headers:public;max_age=300')->only(['index', 'show']);
    }

    /**
     * 獲取商品列表(帶緩存和分頁)
     */
    publicfunction index(): AnonymousResourceCollection
    {
        // 構(gòu)建緩存鍵
        $cacheKey = 'products:' . md5(serialize(request()->all()));
        
        $products = Cache::tags(['products'])->remember(
            $cacheKey,
            now()->addMinutes(10),
            function () {
                return$this->productRepository
                    ->with(['category', 'brand'])  // 預(yù)加載關(guān)聯(lián),避免N+1
                    ->filter(request()->all())
                    ->sortBy(request('sort', 'created_at'))
                    ->paginate(request('per_page', 15));
            }
        );

        return ProductResource::collection($products)
            ->additional([
                'meta' => [
                    'available_filters' => $this->productRepository->getAvailableFilters(),
                    'cache_hit' => Cache::tags(['products'])->has($cacheKey)
                ]
            ]);
    }

    /**
     * 創(chuàng)建新商品
     */
    publicfunction store(StoreRequest $request): JsonResponse
    {
        try {
            $product = DB::transaction(function () use ($request) {
                // 1. 創(chuàng)建商品
                $product = $this->productService->create(
                    $request->validated()
                );

                // 2. 處理圖片上傳
                if ($request->hasFile('images')) {
                    $this->productService->attachImages(
                        $product,
                        $request->file('images')
                    );
                }

                // 3. 清除緩存
                Cache::tags(['products'])->flush();

                return $product;
            });

            return response()->json([
                'message' => '商品創(chuàng)建成功',
                'data' => new ProductResource($product->load(['category', 'brand', 'images']))
            ], Response::HTTP_CREATED);

        } catch (\Exception $e) {
            report($e);
            
            return response()->json([
                'message' => '創(chuàng)建商品失敗',
                'error' => app()->isProduction() ? '服務(wù)器錯誤' : $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    /**
     * 獲取單個商品(帶緩存)
     */
    publicfunction show(Product $product): ProductResource
    {
        // 使用緩存的查詢結(jié)果
        $cachedProduct = Cache::tags(['products', "product:{$product->id}"])
            ->remember(
                "product:{$product->id}:full",
                now()->addHours(1),
                fn() => $product->load([
                    'category',
                    'brand',
                    'images',
                    'variants',
                    'reviews' => fn($q) => $q->latest()->limit(5)
                ])
            );

        returnnew ProductResource($cachedProduct);
    }

    /**
     * 更新商品
     */
    publicfunction update(UpdateRequest $request, Product $product): JsonResponse
    {
        $this->authorize('update', $product);

        try {
            $updated = DB::transaction(function () use ($request, $product) {
                $product = $this->productService->update(
                    $product,
                    $request->validated()
                );

                // 清除相關(guān)緩存
                Cache::tags(['products', "product:{$product->id}"])->flush();

                return $product;
            });

            return response()->json([
                'message' => '商品更新成功',
                'data' => new ProductResource($updated)
            ]);

        } catch (\Exception $e) {
            report($e);
            
            return response()->json([
                'message' => '更新失敗',
                'error' => $e->getMessage()
            ], Response::HTTP_INTERNAL_SERVER_ERROR);
        }
    }

    /**
     * 刪除商品(軟刪除)
     */
    publicfunction destroy(Product $product): JsonResponse
    {
        $this->authorize('delete', $product);

        $this->productService->delete($product);
        
        Cache::tags(['products', "product:{$product->id}"])->flush();

        return response()->json([
            'message' => '商品刪除成功'
        ], Response::HTTP_NO_CONTENT);
    }
}

// app/Services/ProductService.php
<?php
declare(strict_types=1);

namespaceApp\Services;

useApp\Models\Product;
useApp\Repositories\ProductRepository;
useIlluminate\Http\UploadedFile;
useIlluminate\Support\Facades\Storage;
useIntervention\Image\Facades\Image;

finalclass ProductService
{
    publicfunction __construct(
        private readonly ProductRepository $repository
    ) {}

    /**
     * 創(chuàng)建商品(使用DTO模式)
     */
    publicfunction create(array $data): Product
    {
        // 數(shù)據(jù)轉(zhuǎn)換和驗證
        $productData = $this->prepareData($data);
        
        // SKU生成
        $productData['sku'] = $this->generateUniqueSku($data['name']);
        
        // 創(chuàng)建商品
        return$this->repository->create($productData);
    }

    /**
     * 處理圖片上傳(多尺寸生成)
     */
    publicfunction attachImages(Product $product, array $images): void
    {
        $imagePaths = [];
        
        foreach ($images as $image) {
            if (!$image instanceof UploadedFile) {
                continue;
            }

            // 驗證MIME類型
            if (!in_array($image->getMimeType(), ['image/jpeg', 'image/png', 'image/webp'])) {
                thrownew \InvalidArgumentException('不支持的圖片格式');
            }

            // 生成文件名
            $filename = $this->generateImageFilename($image);
            
            // 創(chuàng)建多個尺寸
            $sizes = [
                'thumbnail' => [150, 150],
                'medium' => [500, 500],
                'large' => [1000, 1000]
            ];

            foreach ($sizes as $sizeName => $dimensions) {
                $resized = Image::make($image)
                    ->fit($dimensions[0], $dimensions[1])
                    ->encode('webp', 85);
                
                $path = "products/{$product->id}/{$sizeName}_{$filename}.webp";
                Storage::disk('public')->put($path, $resized);
                
                $imagePaths[$sizeName] = $path;
            }

            // 保存原圖
            $originalPath = "products/{$product->id}/original_{$filename}";
            Storage::disk('public')->putFileAs(
                "products/{$product->id}",
                $image,
                "original_{$filename}"
            );
            $imagePaths['original'] = $originalPath;
        }

        // 保存到數(shù)據(jù)庫
        $product->images()->create($imagePaths);
    }

    /**
     * 生成唯一SKU
     */
    privatefunction generateUniqueSku(string $name): string
    {
        $base = strtoupper(substr(preg_replace('/[^A-Za-z0-9]/', '', $name), 0, 3));
        $suffix = random_int(1000, 9999);
        $sku = "PRD-{$base}-{$suffix}";
        
        // 確保唯一性
        while ($this->repository->exists(['sku' => $sku])) {
            $suffix = random_int(1000, 9999);
            $sku = "PRD-{$base}-{$suffix}";
        }
        
        return $sku;
    }

    privatefunction prepareData(array $data): array
    {
        // 數(shù)據(jù)清理和轉(zhuǎn)換
        return [
            'name' => trim($data['name']),
            'description' => strip_tags($data['description'], '<p><br><strong><em>'),
            'price' => (float) $data['price'],
            'quantity' => (int) $data['quantity'],
            'category_id' => $data['category_id'],
            'brand_id' => $data['brand_id'] ?? null,
            'is_active' => $data['is_active'] ?? true,
            'meta' => $data['meta'] ?? []
        ];
    }

    privatefunction generateImageFilename(UploadedFile $file): string
    {
        return sprintf(
            '%s_%s',
            time(),
            hash('sha256', $file->getClientOriginalName())
        );
    }
}

看看PHP子代理自動實現(xiàn)了什么

  • ? PSR-4標(biāo)準(zhǔn)命名空間
  • ? 依賴注入
  • ? 倉儲模式
  • ? 服務(wù)層架構(gòu)
  • ? 緩存策略
  • ? 事務(wù)處理
  • ? 錯誤處理
  • ? 安全驗證
  • ? 性能優(yōu)化

案例2:實現(xiàn)安全的用戶認證系統(tǒng)

輸入

創(chuàng)建一個安全的JWT認證系統(tǒng)

PHP子代理輸出

<?php
// app/Services/Auth/JwtAuthService.php
declare(strict_types=1);

namespaceApp\Services\Auth;

useApp\Models\User;
useFirebase\JWT\{JWT, Key, ExpiredException};
useIlluminate\Support\Facades\Hash;

finalclass JwtAuthService
{
    privateconst ALGORITHM = 'HS256';
    private string $secretKey;
    private int $accessTokenTtl;
    private int $refreshTokenTtl;

    publicfunction __construct()
    {
        $this->secretKey = config('jwt.secret');
        $this->accessTokenTtl = config('jwt.access_ttl', 900); // 15分鐘
        $this->refreshTokenTtl = config('jwt.refresh_ttl', 604800); // 7天
    }

    /**
     * 生成JWT令牌對
     */
    publicfunction generateTokenPair(User $user): array
    {
        $accessToken = $this->generateAccessToken($user);
        $refreshToken = $this->generateRefreshToken($user);

        // 存儲刷新令牌的哈希值
        $user->refresh_tokens()->create([
            'token_hash' => hash('sha256', $refreshToken),
            'expires_at' => now()->addSeconds($this->refreshTokenTtl),
            'ip_address' => request()->ip(),
            'user_agent' => request()->userAgent()
        ]);

        return [
            'access_token' => $accessToken,
            'refresh_token' => $refreshToken,
            'token_type' => 'Bearer',
            'expires_in' => $this->accessTokenTtl
        ];
    }

    /**
     * 驗證訪問令牌
     */
    publicfunction validateAccessToken(string $token): ?User
    {
        try {
            $decoded = JWT::decode($token, new Key($this->secretKey, self::ALGORITHM));
            
            // 驗證令牌類型
            if ($decoded->type !== 'access') {
                returnnull;
            }

            // 檢查是否在黑名單中
            if ($this->isTokenBlacklisted($token)) {
                returnnull;
            }

            return User::find($decoded->sub);

        } catch (ExpiredException $e) {
            thrownew TokenExpiredException('訪問令牌已過期');
        } catch (\Exception $e) {
            returnnull;
        }
    }

    /**
     * 刷新訪問令牌
     */
    publicfunction refreshAccessToken(string $refreshToken): array
    {
        try {
            $decoded = JWT::decode($refreshToken, new Key($this->secretKey, self::ALGORITHM));
            
            if ($decoded->type !== 'refresh') {
                thrownew \InvalidArgumentException('無效的刷新令牌');
            }

            $user = User::find($decoded->sub);
            if (!$user) {
                thrownew \InvalidArgumentException('用戶不存在');
            }

            // 驗證刷新令牌是否有效
            $tokenHash = hash('sha256', $refreshToken);
            $storedToken = $user->refresh_tokens()
                ->where('token_hash', $tokenHash)
                ->where('expires_at', '>', now())
                ->where('revoked', false)
                ->first();

            if (!$storedToken) {
                thrownew \InvalidArgumentException('刷新令牌無效或已撤銷');
            }

            // 更新最后使用時間
            $storedToken->update(['last_used_at' => now()]);

            // 生成新的訪問令牌
            return [
                'access_token' => $this->generateAccessToken($user),
                'token_type' => 'Bearer',
                'expires_in' => $this->accessTokenTtl
            ];

        } catch (\Exception $e) {
            thrownew \InvalidArgumentException('刷新令牌無效: ' . $e->getMessage());
        }
    }

    /**
     * 撤銷所有令牌
     */
    publicfunction revokeAllTokens(User $user): void
    {
        $user->refresh_tokens()->update(['revoked' => true]);
        
        // 可選:添加到黑名單緩存
        Cache::tags(['jwt:blacklist'])->put(
            "user:{$user->id}:revoked",
            true,
            now()->addSeconds($this->refreshTokenTtl)
        );
    }

    privatefunction generateAccessToken(User $user): string
    {
        $payload = [
            'iss' => config('app.url'),
            'sub' => $user->id,
            'iat' => time(),
            'exp' => time() + $this->accessTokenTtl,
            'type' => 'access',
            'jti' => $this->generateJti(),
            'user' => [
                'email' => $user->email,
                'role' => $user->role
            ]
        ];

        return JWT::encode($payload, $this->secretKey, self::ALGORITHM);
    }

    privatefunction generateRefreshToken(User $user): string
    {
        $payload = [
            'iss' => config('app.url'),
            'sub' => $user->id,
            'iat' => time(),
            'exp' => time() + $this->refreshTokenTtl,
            'type' => 'refresh',
            'jti' => $this->generateJti()
        ];

        return JWT::encode($payload, $this->secretKey, self::ALGORITHM);
    }

    privatefunction generateJti(): string
    {
        return bin2hex(random_bytes(16));
    }

    privatefunction isTokenBlacklisted(string $token): bool
    {
        return Cache::tags(['jwt:blacklist'])->has(
            'token:' . hash('sha256', $token)
        );
    }
}

五、進階技巧:定制你的PHP子代理

5.1 針對特定框架優(yōu)化

Laravel專精版

## Framework Proficiency
- Laravel 11全棧開發(fā)
- Livewire實時組件
- Inertia.js + Vue/React
- Laravel Octane性能加速
- Horizon隊列管理

Symfony專精版

## Framework Proficiency
- Symfony 7組件架構(gòu)
- API Platform構(gòu)建
- Messenger組件
- Doctrine ORM優(yōu)化
- Twig模板引擎

5.2 添加團隊規(guī)范

## Team Standards
- 代碼風(fēng)格:PSR-12標(biāo)準(zhǔn)
- 命名規(guī)范:駝峰命名法
- 文檔:PHPDoc完整注釋
- 測試覆蓋:最低80%
- Git工作流:GitFlow

六、常見問題解答

Q1:PHP子代理什么時候觸發(fā)?

觸發(fā)關(guān)鍵詞

  • PHP、Laravel、Symfony
  • Composer、Artisan
  • MySQL、數(shù)據(jù)庫
  • API、Web開發(fā)

Q2:如何處理PHP版本兼容?

子代理會標(biāo)注版本要求:

// PHP 8.0+
#[Attribute]
class Route {}

// PHP 7.4兼容寫法
/** @Annotation */
class Route {}

Q3:如何優(yōu)化PHP性能?

子代理會自動實現(xiàn):

  • OpCache配置
  • 查詢優(yōu)化
  • 緩存策略
  • 異步隊列
  • 懶加載

Q4:如何確保代碼安全?

自動實施:

  • 參數(shù)化查詢
  • 輸入驗證
  • CSRF保護
  • XSS防護
  • 密碼加密

七、性能提升數(shù)據(jù)

評估指標(biāo)

通用Claude

PHP子代理

提升幅度

代碼規(guī)范

40%

100%

+150%

安全性

30%

95%

+217%

性能優(yōu)化

25%

90%

+260%

測試覆蓋

10%

85%

+750%

現(xiàn)代特性

35%

100%

+186%

八、總結(jié):PHP子代理的核心價值

這個PHP開發(fā)子代理帶來的價值:

  1. 現(xiàn)代化:使用PHP 8.3+最新特性
  2. 安全第一:默認防護各種漏洞
  3. 性能優(yōu)化:自動實施最佳實踐
  4. 框架精通:Laravel/Symfony專業(yè)水準(zhǔn)
  5. 企業(yè)就緒:可擴展的架構(gòu)設(shè)計

記住:PHP已經(jīng)不是"個人主頁"語言,而是驅(qū)動Facebook、WordPress等巨頭的企業(yè)級語言。這個子代理幫你寫出專業(yè)的PHP代碼。

責(zé)任編輯:武曉燕 來源: 前端達人
相關(guān)推薦

2025-08-14 08:37:58

2025-08-13 09:45:47

2021-07-06 08:00:00

企業(yè)架構(gòu)IT技術(shù)

2010-08-04 11:37:44

PHP NFS

2013-03-21 09:34:42

架構(gòu)師架構(gòu)設(shè)計

2009-05-25 10:18:29

PHPLAMPGLAMMP

2025-07-28 04:22:00

2020-06-28 14:15:52

前端架構(gòu)師互聯(lián)網(wǎng)

2017-02-05 09:13:58

PHP Cake框架構(gòu)建

2012-12-13 09:40:04

架構(gòu)師

2012-11-12 10:04:53

MySQL開發(fā)模式

2013-12-09 09:57:37

2018-07-06 11:25:40

Java架構(gòu)師面試

2020-05-11 09:54:33

JavaScript開發(fā)技術(shù)

2020-08-24 08:50:12

架構(gòu)師TL技術(shù)

2016-09-29 08:36:38

2012-02-23 15:02:20

架構(gòu)師介紹

2020-05-07 10:14:00

企業(yè)架構(gòu)師CIOIT網(wǎng)絡(luò)

2016-09-23 10:05:11

運維架構(gòu)師前景

2015-08-12 09:33:57

開發(fā)人員PHP資源庫
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品国产三级国产aⅴ浪潮| 日韩中文字幕91| 日韩精品资源二区在线| 青草网在线观看| 五月婷婷丁香花| 日韩高清国产一区在线| 久久久精品一区二区三区| 天堂va欧美va亚洲va老司机| 91在线超碰| 国产日韩欧美激情| 亚洲一区亚洲二区亚洲三区| 国产第一页在线播放| 国产一区二区亚洲| 日韩一区二区三区视频在线观看| 可以看毛片的网址| av电影在线观看一区二区三区| 国产盗摄一区二区三区| 欧美在线一区二区视频| 丰满少妇高潮久久三区| 国产成人一区| 欧美久久亚洲| 三级久久三级久久久| 久久九九免费视频| 日韩乱码人妻无码中文字幕久久| 不卡的国产精品| 色综合久久综合中文综合网| 亚洲国产一二三精品无码 | 久久综合亚州| 欧美高清电影在线看| 国产欧美一区二区三区在线观看视频| 亚洲第一二区| 欧美日韩国产在线观看| 116极品美女午夜一级| aaa大片在线观看| 欧美韩日一区二区三区四区| 国精产品99永久一区一区| 国产喷水福利在线视频| 日韩av不卡一区二区| 97超视频免费观看| 国产亚洲欧美精品久久久久久 | 国产suv一区二区三区88区| 国产精品99一区| 二区视频在线观看| 亚洲裸体俱乐部裸体舞表演av| 久久精品国产成人精品| 国产真人真事毛片视频| 欧美人妖在线| 亚洲三级 欧美三级| 日b视频在线观看| 欧美精品三级在线| 999精品视频| 久久久99精品免费观看| 国产在线一区二| 亚洲成人第一区| 精品一区二区三区在线观看| 国产精品视频成人| 亚洲免费视频二区| 日本aⅴ精品一区二区三区| 日韩av大片在线| 午夜婷婷在线观看| 老司机一区二区三区| 88xx成人精品| 毛片基地在线观看| 中文久久精品| 美女性感视频久久久| 日本黄色小说视频| 午夜视频精品| 欧美极品美女电影一区| 久久精品女人毛片国产| 亚洲午夜激情在线| 久久久久久伊人| 国产大片aaa| 欧美亚洲在线| 国产成人一区二| 在线播放国产一区| 精品无人区卡一卡二卡三乱码免费卡 | 99在线观看| 蜜桃91麻豆精品一二三区| 成人精品鲁一区一区二区| 国产一区二区三区四区hd| 色就是色亚洲色图| 国内精品国产成人国产三级| 亚洲影视一区| 久久久久久久久爱| av网站中文字幕| 日本不卡视频在线| 92国产精品视频| 六月丁香色婷婷| 国产亚洲精品资源在线26u| 亚洲视频导航| 日本成人不卡| 日韩人体视频一二区| 国产 porn| 国产免费av国片精品草莓男男| 日韩欧美一二三| 国产夫妻性爱视频| 91综合在线| 欧美激情a∨在线视频播放| 国产精品视频免费播放| 日本亚洲欧美天堂免费| 亚洲bt欧美bt日本bt| 婷婷综合激情网| 中文字幕中文在线不卡住| 中国丰满熟妇xxxx性| 经典三级一区二区| 日韩一区二区不卡| 天天躁日日躁aaaxxⅹ| 天天射成人网| 亲爱的老师9免费观看全集电视剧| 中文字幕av网站| 成人免费视频网站在线观看| 视频一区视频二区视频三区高| 超碰免费公开在线| 色av一区二区| 国产av一区二区三区传媒| 免费精品国产的网站免费观看| www.精品av.com| 久久99国产综合精品免费| 经典三级在线一区| 欧美国产一区二区在线| 日本无删减在线| 欧美性生活大片视频| 亚洲精品国产成人av在线| 色999日韩| 青青青国产精品一区二区| 91原创国产| 东京热一区二区三区四区| 国产一区在线视频| 亚洲高清在线播放| 日本黄色免费在线| 精品国产123| 亚洲AV成人无码精电影在线| 爽好多水快深点欧美视频| 99国产视频在线| 伦xxxx在线| 在线观看成人小视频| 国产精品300页| 国内激情久久| ts人妖另类在线| www红色一片_亚洲成a人片在线观看_| 在线免费观看成人短视频| www.色天使| 国产精品日韩久久久| 成人免费看片网址| 在线观看三级视频| 在线观看91av| 你懂得在线观看| 蜜桃av噜噜一区二区三区小说| 欧美日韩在线精品一区二区三区| 女海盗2成人h版中文字幕| 亚洲成人a**站| 精品无码人妻一区二区三| 国产传媒久久文化传媒| 热这里只有精品| 成人动漫视频在线观看| 久久久成人精品视频| 国产精品久久久久久久免费| 日韩毛片视频在线看| 国产福利在线免费| 国产精品国产三级国产在线观看| 国产一区二区中文字幕| 91精品国产综合久久香蕉922| www.中文字幕久久久| 欧美伊人久久大香线蕉综合69| av电影在线不卡| 免费看日韩精品| 一区二区三区视频| 精品国产亚洲一区二区在线观看 | 西西裸体人体做爰大胆久久久| 国产偷国产偷亚洲高清97cao| 伦理在线一区| 亚洲精品suv精品一区二区| av资源免费观看| 国产三级久久久| 91亚洲精品久久久蜜桃借种| 综合色一区二区| 精品国产综合| 黄色精品视频| 欧美精品一区在线播放| 五月婷婷在线播放| 日本道在线观看一区二区| 亚洲aaa视频| 国产高清成人在线| 免费欧美一级视频| 日韩精品网站| 高清视频一区| av有声小说一区二区三区| 久久精品久久久久| 午夜成人免费影院| 欧美日韩在线观看一区二区| 九九热这里有精品视频| 91亚洲永久精品| 在线欧美小视频| xxxwww国产| 日本欧美在线观看| 日本黄网站色大片免费观看| 日韩高清成人在线| 国产在线观看91精品一区| 国产网红在线观看| 国产一区二区三区直播精品电影| 97国产精品久久久| 天天综合色天天| 国产麻豆视频在线观看| av成人免费在线| 午夜免费看视频| 一本久道久久综合婷婷鲸鱼| 亚洲欧洲精品一区二区| 精品亚洲免a| 成人黄色生活片| 原纱央莉成人av片| 超薄丝袜一区二区| 番号在线播放| 亚洲国产91色在线| 97人妻精品一区二区三区| 富二代精品短视频| 一区二区视频免费看| 国产亚洲福利社区一区| 国产a级片视频| 久久激情五月激情| 成人三级视频在线播放| 伊人久久大香线蕉综合热线| 中文字幕欧美日韩一区二区三区| 久久香蕉网站| 亚洲资源在线看| 草民电影神马电影一区二区| 538国产精品视频一区二区| 午夜在线激情影院| 日韩亚洲欧美成人| 久久这里精品| 亚洲精品久久久久中文字幕二区| 国产三级自拍视频| 亚洲国产专区校园欧美| 亚洲天堂av在线免费| 国产wwwwwww| 欧美人与性动xxxx| 国产成人a v| 日韩欧美一区二区三区久久| 日本天堂网在线观看| 一二三区精品视频| 手机在线免费看片| 中文字幕制服丝袜成人av| 韩国三级hd中文字幕| xnxx国产精品| 人妻无码中文久久久久专区| 成人短视频下载| 日本性生活一级片| 国产91丝袜在线18| 欧美日韩一区二区区别是什么| 国产在线一区二区综合免费视频| 国产三级国产精品国产专区50| 久久永久免费| www.xxx亚洲| 玖玖玖国产精品| 黄色一级二级三级| 视频一区免费在线观看| 久久精品视频91| 视频一区二区欧美| 亚洲国产精品三区| 蜜臀av一区二区在线观看| 一女二男3p波多野结衣| 久久99精品视频| 亚洲午夜精品一区| 激情欧美一区二区| 天天爽夜夜爽视频| 大桥未久av一区二区三区中文| 年下总裁被打光屁股sp| 成人av免费在线观看| 欧美做受喷浆在线观看| 国产日韩高清在线| 久久久久久视频| 午夜精品久久久久久久蜜桃app | 色一区二区三区| 日韩和的一区二区| 野外做受又硬又粗又大视频√| 欧美三级特黄| 91av资源网| 免费观看久久久4p| 久久精品视频在线观看免费| 国产成a人无v码亚洲福利| 日韩片在线观看| 日本一二三四高清不卡| 欧美视频一区二区在线| 亚洲精品精品亚洲| 国产 日韩 欧美 在线| 在线欧美小视频| 国产免费一区二区三区最新不卡| 欧美精品一区在线观看| 伦理片一区二区三区| 在线观看精品自拍私拍| av毛片在线播放| 欧美一级成年大片在线观看| 欧美大片网站| 国产一区在线免费| 国内精品久久久久久久久电影网| 国产系列第一页| 99在线|亚洲一区二区| 亚洲欧美日韩一级| 岛国一区二区三区| 日本成人午夜影院| 亚洲一区二区精品视频| 精品乱码一区内射人妻无码| 欧美成人一区二区三区在线观看| 天堂在线中文| 久久伊人91精品综合网站| 欧美aa在线观看| 91视频88av| 香蕉精品久久| 黄色网络在线观看| 肉丝袜脚交视频一区二区| 深夜做爰性大片蜜桃| 欧美激情在线一区二区| 久久精品免费av| 88在线观看91蜜桃国自产| 日韩一区av| 欧美激情自拍偷拍| 亚洲国产婷婷香蕉久久久久久99 | 国产一区久久久| 日韩人妻一区二区三区| 亚洲黄色小视频| 中文有码在线播放| 精品亚洲一区二区三区四区五区| h片在线观看网站| 国产精品午夜视频| 女人av一区| 国产素人在线观看| 国产成人免费在线视频| 亚洲色图27p| 亚洲一级不卡视频| 99er热精品视频| 色哟哟入口国产精品| 国产精品久久久久久久久久久久久久久久| 亚洲在线网站| 国产一级片黄色| 99久久精品国产导航| 青娱乐免费在线视频| 7777精品伊人久久久大香线蕉| 国产女人在线观看| 66m—66摸成人免费视频| 中文字幕一区二区三区四区久久| 一区二区三区国产福利| 蜜臀av性久久久久蜜臀aⅴ| 法国空姐电影在线观看| 色综合久久88色综合天天| 涩爱av在线播放一区二区| 97视频在线观看播放| 老牛国内精品亚洲成av人片| 亚洲精品蜜桃久久久久久| 国产成人在线观看| 麻豆视频在线观看| 日韩免费观看高清完整版在线观看| 黄色小网站在线观看| 91精品久久久久久久久中文字幕| 色喇叭免费久久综合网| 中文字幕亚洲影院| 中文字幕欧美一| 国产又粗又猛又爽又黄视频| 精品国产一区二区三区四区在线观看| 国产91亚洲精品久久久| 亚洲精品日韩精品| 麻豆成人综合网| 黄色录像免费观看| 日韩一区二区电影| 国产在线拍揄自揄拍视频 | 亚洲av无码国产精品永久一区| 成人444kkkk在线观看| 香蕉免费一区二区三区在线观看| 亚洲av首页在线| 国产成人在线电影| 国产成人精品一区二三区| 亚洲老头老太hd| 欧洲精品一区二区三区| 一区二区精品国产| 国产精品一区二区久久精品爱涩| 久草成人在线视频| 日韩hd视频在线观看| gogo亚洲高清大胆美女人体| 亚洲精品久久久久久一区二区| 久久国产福利国产秒拍| 免费毛片在线播放免费| 日韩av在线免播放器| 日韩高清成人| 乱子伦一区二区| 99精品视频中文字幕| 亚洲午夜在线播放| 久久国产精品99国产精| 欧美爱爱网站| 亚洲欧美日韩综合网| 亚洲无人区一区| 国模精品一区二区| 91嫩草在线视频| 日韩一区二区免费看| 91资源在线播放| 日韩欧美中文字幕精品| 成人性生活av| 麻豆视频传媒入口| 久久久午夜电影| 国产高清精品软件丝瓜软件| 日本久久91av| 韩国av一区| 日韩视频在线观看免费视频|