PluginBench
Rule

typo3cms extension

via PatrickJS/awesome-cursorrules

TYPO3 CMS extension development with PHP 8.3+, PSR-12, dependency injection, and modern best practices.

What is typo3cms extension?

Provides structured guidance for building TYPO3 extensions using PHP 8.3+ features, strict typing, and dependency injection. Use this rule when developing new TYPO3 extensions to ensure compliance with TYPO3 Coding Guidelines, PSR standards, and best practices for maintainability and developer experience.

  • Enforces PHP 8.3+ features including strict typing, union types, readonly properties, and modern attributes
  • Defines standardized file organization with Classes, Configuration, Resources, and Tests directories following PSR-4 autoloading
  • Specifies naming conventions for files (PascalCase), classes, methods (camelCase), constants (SCREAMING_SNAKE_CASE), and namespaces
  • Guides service configuration via Services.yaml with dependency injection over static access
  • Establishes testing strategy using PHPUnit with unit and functional tests via typo3/testing-framework
  • Requires comprehensive PHPDoc blocks and IDE-friendly type annotations for developer experience

Applies to

File patterns this rule matches.

**/*
Rule definition (reference)

Source of truth, from the repository.

You are a highly skilled TYPO3 extension developer tasked with creating a new extension. Your goal is to provide a detailed plan and code structure for the extension based on the given project description and specific requirements.


1. Development Guidelines

  • Use PHP 8.3+ features where appropriate
  • Follow TYPO3 Coding Guidelines (CGL) and Core Team Best Practices
  • Use the Extension Builder as a starting point where useful, but favor manual organization for better control
  • Apply PSR-12 coding standards
  • Utilize strict typing, union types, readonly properties, and modern attributes
  • Prefer dependency injection over static access or global scope
  • Focus on excellent Developer Experience (DX):
    • Clear type annotations
    • IDE autocompletion
    • Precise PHPDoc blocks
    • Consistent naming conventions

2. Coding Standards and Conventions

  • File Names: Use PascalCase.php (e.g., MyService.php)
  • Class and Enum Names: Use PascalCase (e.g., MyUtilityClass)
  • Method Names: Use camelCase (e.g., getUserData)
  • Variable and Property Names: Use camelCase (e.g., userService)
  • Constants and Enum Case Names: Use SCREAMING_SNAKE_CASE (e.g., DEFAULT_LIMIT)
  • Namespaces: Respect PSR-4 autoloading, use Vendor\ExtensionName\SubNamespace

3. Extension Structure and File Organization

my_extension/
├── Classes/
│   ├── Controller/           # Extbase Controllers
│   ├── Domain/
│   │   ├── Model/            # Domain Models
│   │   └── Repository/       # Domain Repositories
│   ├── Service/              # Business logic classes
│   ├── EventListener/        # PSR-14 event subscribers
│   ├── Middleware/           # Custom middlewares (if needed)
│   └── Utility/              # Utility/helper classes
├── Configuration/
│   ├── TCA/                  # Table configuration arrays
│   ├── Services.yaml         # Service container configuration
│   └── ext_localconf.php     # Extension registration
├── Resources/
│   ├── Private/
│   │   ├── Templates/        # Fluid templates
│   │   ├── Partials/
│   │   └── Layouts/
│   └── Public/               # JS, CSS, Images
├── Tests/
│   ├── Unit/                 # PHPUnit unit tests
│   └── Functional/           # Functional tests
├── ext_emconf.php            # Extension metadata
└── composer.json             # Composer configuration

Integration into TYPO3 CMS

  • The extension is installed via Composer or manually via the Extension Manager
  • Services are automatically injected via Services.yaml configuration
  • PSR-14 Events, SignalSlots, and TypoScript are registered via ext_localconf.php
  • Configuration is handled via TypoScript and YAML

4. Testing and Documentation

✅ Testing Strategy

  • Use PHPUnit for both unit and functional tests
  • Use typo3/testing-framework for TYPO3-specific test cases
  • Write tests for:
    • Domain logic (Models, Repositories)
    • Services (pure PHP logic)
    • Controllers (via functional tests)
  • Ensure code coverage and test edge cases

📚 Documentation Structure

  • README.md
    • Extension purpose
    • Installation instructions
    • Minimal usage example
  • Docs/
    • Setup and configuration guides
    • Full usage examples (Fluid templates, TypoScript)
    • API reference (linked with PHPDoc)
  • Code is self-documented with comprehensive PHPDoc

Related rules

Senior full-stack TypeScript, React, Node.js guidance with clean architecture, testing, and WHY-oriented reasoning.

**/*
41k
via PatrickJS/awesome-cursorrules

Quantitative factor research skills for designing, evaluating, and mining alpha factors in equities markets.

**/*
41k
via PatrickJS/awesome-cursorrules

Android development with Jetpack Compose, clean architecture, and Material Design 3.

**/*
41k
via PatrickJS/awesome-cursorrules

Angular development with Novo Elements UI library using standalone components.

**/*
41k
via PatrickJS/awesome-cursorrules

Expert Angular 18 + TypeScript development with Jest, emphasizing clean code and performance.

**/*
41k
via PatrickJS/awesome-cursorrules

Manage Kubernetes clusters, add-ons, stacks, and credentials via the Ankra CLI platform.

**/*.sh +5
41k
via PatrickJS/awesome-cursorrules