PluginBench
Rule

typo3cms extension

via PatrickJS/awesome-cursorrules

TYPO3 CMS extension development with modern PHP 8.3+, PSR standards, and best practices.

What is typo3cms extension?

This rule guides development of TYPO3 CMS extensions using PHP 8.3+ features, PSR-12 coding standards, and TYPO3 Core best practices. Use it when building new extensions to ensure consistent structure, dependency injection, strict typing, and comprehensive testing.

  • Enforces PSR-12 coding standards and TYPO3 Coding Guidelines with modern PHP 8.3+ features including strict typing and readonly properties
  • Defines extension directory structure with organized Classes, Configuration, Resources, and Tests folders following PSR-4 autoloading
  • Mandates dependency injection over static access and provides service container configuration via Services.yaml
  • Requires comprehensive PHPDoc blocks, type annotations, and IDE autocompletion for excellent developer experience
  • Establishes testing strategy using PHPUnit with unit and functional tests via typo3/testing-framework
  • Specifies naming conventions for files (PascalCase), classes, methods (camelCase), constants (SCREAMING_SNAKE_CASE), and namespaces

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

Swift UIKit development guidelines emphasizing clean architecture, Auto Layout with SnapKit, and programmatic UI composition.

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

C# guidance for Unity tower defense game with Ringcon controller integration.

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

Best practices for Vercel deployments, serverless functions, Edge Runtime, and CI/CD configuration.

["vercel.json" +5
41k
via PatrickJS/awesome-cursorrules

Expert guidance for deploying serverless applications on Vercel with Edge Runtime, middleware, and production best practices.

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

Expert Vitest unit testing guidance with TypeScript support and dependency mocking.

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

Expert guidance for building VSCode extensions with TypeScript, Node.js, and Electron.

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