Files
Understand-Anything/understand-anything-plugin/skills/understand/languages/php.md
T
Sreeram b5eb2e6041 feat: language-agnostic analysis with config-driven registry and framework detection
Replace the TypeScript/JavaScript-biased analysis pipeline with a truly
language-agnostic system. The core architecture was already language-neutral
(graph schema, dashboard, search) — the bias lived in agent prompts,
tree-sitter plugin, and language-lesson system.

Core changes:
- LanguageConfig + FrameworkConfig types with Zod validation
- LanguageRegistry (12 languages) and FrameworkRegistry (10 frameworks)
- Config-driven TreeSitterPlugin replacing hardcoded TS/JS grammars
- PluginRegistry now delegates to LanguageRegistry for extension mapping
- Language-lesson system uses config for display names and concepts

Prompt system:
- SKILL.md generalized: dynamic injection of language snippets and
  framework addendums instead of hardcoded if/else conditionals
- 12 language prompt snippets (languages/*.md) with concepts, patterns,
  frameworks per language
- 10 framework addendums (frameworks/*.md) with canonical file roles,
  edge patterns, architectural layers — Django/FastAPI/Flask preserved
  and split, plus React/Next.js/Express/Vue/Spring/Rails/Gin added
- Extended entry points, directory patterns, and test patterns across
  all 12 language ecosystems in base prompts
2026-03-23 12:35:09 +05:30

47 lines
2.5 KiB
Markdown

# PHP Language Prompt Snippet
## Key Concepts
- **Namespaces**: Organize code and prevent naming collisions using backslash-delimited paths
- **Traits**: Horizontal code reuse mechanism for sharing methods across unrelated classes
- **Type Declarations**: Parameter, return, and property types (scalar, union, intersection types)
- **Attributes (PHP 8+)**: Native metadata annotations replacing docblock-based configuration
- **Enums (PHP 8.1+)**: First-class enumeration types with methods and interface implementation
- **Fibers**: Lightweight cooperative concurrency primitives for non-blocking I/O
- **Closures/Anonymous Functions**: First-class functions with explicit `use` for variable capture
- **Magic Methods**: Special methods like `__construct`, `__get`, `__set`, `__call` for object behavior
- **Dependency Injection**: Constructor injection managed by PSR-11 compatible containers
- **Middleware**: Request/response pipeline pattern central to modern PHP frameworks
## Import Patterns
- `use Namespace\ClassName` — import a class by its fully qualified name
- `use Namespace\ClassName as Alias` — import with an alias to avoid conflicts
- `namespace App\Http\Controllers` — declare the current file's namespace
- `use function Namespace\functionName` — import a namespaced function
## File Patterns
- `composer.json` — dependency management and PSR-4 autoloading configuration
- `index.php` — web application entry point (front controller)
- `artisan` — Laravel CLI entry point for commands and migrations
- `routes/` — route definition files (web.php, api.php in Laravel)
- PSR-4 autoloading maps namespace prefixes to directory paths
## Common Frameworks
- **Laravel** — Full-featured framework with Eloquent ORM, Blade templates, and queues
- **Symfony** — Component-based framework powering many PHP projects and libraries
- **WordPress** — CMS platform with hook-based plugin architecture
- **Slim** — Micro-framework for APIs and small applications
- **CodeIgniter** — Lightweight MVC framework with minimal configuration
## Example Language Notes
> Uses PHP 8 attributes `#[Route('/api/users')]` for declarative route mapping on
> controller methods. Attributes replace the older docblock annotation pattern,
> providing native language support for metadata that tools can reflect upon.
>
> PSR-4 autoloading in `composer.json` maps `App\` to `src/`, so the class
> `App\Http\Controllers\UserController` loads from `src/Http/Controllers/UserController.php`.