Claude Code Plugins

Community-maintained marketplace

Feedback

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name php-dev
description PHP開発支援(Slim/PDO/Composer)。 PSR-12、PHPStan、PDOでセキュアPHP開発をガイド。
allowed-tools Read, Grep, Glob, Bash

PHP開発固有設定

このファイルはPHP開発に特化した設定を定義します。

公式ドキュメントリファレンス

最新の安定版バージョンは以下の公式ドキュメントを参照してください:

技術 公式ドキュメント 用途
PHP PHP Downloads バージョン確認・ダウンロード
PHP Supported Versions PHP Supported Versions サポート状況確認
Slim Framework Slim Framework 公式サイト
Slim (Packagist) slim/slim 最新版・リリース履歴
PHPUnit phpunit/phpunit 最新版・リリース履歴
PHPStan phpstan/phpstan 最新版・リリース履歴
Monolog monolog/monolog 最新版・リリース履歴

PHP開発固有のルール

バージョン要件

最新の安定版バージョンは上記の公式ドキュメントリファレンスで確認してください。

  • PHP: 最新の安定版を使用(公式サイトで確認)
    • 参考: PHP 8.3以降を推奨(2025年12月時点)
  • strict_types宣言を必須とする
  • 型ヒントと戻り値の型を使用
  • null合体演算子を活用

コーディング標準

  • PSR-12コーディング標準に準拠する
  • 意味のある変数名を使用する
  • 関数は単一責任原則に従う
  • 適切なエラーハンドリングを実装する

フレームワーク・ツール

  • Slim Framework 4.x(軽量API開発)
  • Symfony 6.x(フルフレームワークが必要な場合)
  • 素のPHP + Composerパッケージ
  • PDOでデータベース抽象化(MySQL/Oracle対応)
  • Monologでロギング実装
  • PHPUnit + Phakeでテスト

プロジェクト構成

src/
├── Controllers/      # コントローラー
├── Models/          # データモデル
├── Services/        # ビジネスロジック
├── Helpers/         # ヘルパー関数
└── Config/          # 設定
public/              # 公開ディレクトリ
├── index.php        # エントリーポイント
├── css/
├── js/
└── images/
vendor/              # Composerパッケージ
tests/               # テストコード
composer.json        # 依存関係定義
phpunit.xml          # PHPUnit設定

composer.json例

{
    "name": "company/project",
    "description": "PHP Application",
    "type": "project",
    "require": {
        "php": "^8.3",
        "monolog/monolog": "^3.0",
        "slim/slim": "^4.0",
        "slim/psr7": "^1.0",
        "ext-pdo": "*",
        "ext-pdo_mysql": "*",
        "ext-pdo_oci": "*"
    },
    "require-dev": {
        "phpunit/phpunit": "^11.0",
        "phake/phake": "^4.0",
        "phpstan/phpstan": "^2.0",
        "squizlabs/php_codesniffer": "^3.0",
        "friendsofphp/php-cs-fixer": "^3.0"
    },
    "comment": "最新版は公式ドキュメントリファレンスのPackagistリンクで確認してください(参考値: 2025年12月時点)",
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    }
}

データベース対応

  • MySQL 8.0
  • Oracle Database 19c/21c
  • プリペアドステートメント必須
  • PDOベースの抽象化層

データベース接続例

// config/database.php
return [
    'mysql' => [
        'dsn' => 'mysql:host=localhost;dbname=app;charset=utf8mb4',
        'username' => 'root',
        'password' => 'password',
        'options' => [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]
    ],
    'oracle' => [
        'dsn' => 'oci:dbname=//localhost:1521/ORCL;charset=AL32UTF8',
        'username' => 'app_user',
        'password' => 'password',
        'options' => [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        ]
    ]
];

ロギング(Monolog)

use Monolog\Logger;
use Monolog\Handler\RotatingFileHandler;
use Monolog\Formatter\LineFormatter;

class LoggerFactory
{
    public static function create(string $name = 'app'): Logger
    {
        $logger = new Logger($name);

        // 日別ローテーション
        $handler = new RotatingFileHandler(
            __DIR__ . '/logs/app.log',
            30,  // 30日間保持
            Logger::INFO
        );

        $formatter = new LineFormatter(
            "[%datetime%] %channel%.%level_name%: %message% %context%\n",
            'Y-m-d H:i:s'
        );
        $handler->setFormatter($formatter);
        $logger->pushHandler($handler);

        return $logger;
    }
}

セキュリティ実装

グローバルセキュリティポリシーを参照してください。

PHP追加セキュリティ設定

  • すべての入力を検証・フィルタリング
  • プリペアドステートメント使用
  • XSS対策の実装
  • CSRFトークンの実装
  • 適切なパスワードハッシュを使用
// セキュリティ例
// 入力検証
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

// CSRFトークン生成
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// パスワードハッシュ化
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

テスト要件

  • PHPUnit + Phake
  • カバレッジ95%以上
  • 統合テストの実装
  • テスト用DBはSQLite(:memory:)を使用
use PHPUnit\Framework\TestCase;
use Phake;

class UserServiceTest extends TestCase
{
    private $userRepository;
    private $logger;
    private $userService;

    protected function setUp(): void
    {
        $this->userRepository = Phake::mock(UserRepository::class);
        $this->logger = Phake::mock(\Monolog\Logger::class);

        $this->userService = new UserService(
            $this->userRepository,
            $this->logger
        );
    }

    public function testCreateUser(): void
    {
        // テスト実装
        Phake::when($this->userRepository)->create($userData)
            ->thenReturn(['id' => 1] + $userData);

        $user = $this->userService->create($userData);

        Phake::verify($this->userRepository)->create($userData);
        Phake::verify($this->logger)->info('User created', Phake::anyParameters());
    }
}

パフォーマンス

  • OPcache有効化
  • ファイルベースキャッシュ実装
  • 大量データ処理時のメモリ管理
  • N+1問題の回避

よく使うコマンド

# Composer
composer install
composer require phake/phake --dev
composer require monolog/monolog

# テスト
./vendor/bin/phpunit
./vendor/bin/phpunit --coverage-html coverage
./vendor/bin/phpstan analyse

# コード整形
./vendor/bin/php-cs-fixer fix
./vendor/bin/phpcs --standard=PSR12 src/