forked from PatrickJS/awesome-cursorrules
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.cursorrules
More file actions
93 lines (76 loc) · 3.54 KB
/
.cursorrules
File metadata and controls
93 lines (76 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
```plaintext
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**