refactor: moved documents from docs to doc
This commit is contained in:
parent
f33d7ce33c
commit
f2f81f11df
56 changed files with 96 additions and 0 deletions
0
docs/.gitignore → doc/.gitignore
vendored
0
docs/.gitignore → doc/.gitignore
vendored
96
doc/reflection_implementation_strategy.md
Normal file
96
doc/reflection_implementation_strategy.md
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
# Platform Reflection Implementation Strategy
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This document outlines the implementation strategy for Platform Reflection, a cross-platform reflection system for Dart that serves as the foundation for our Laravel implementation.
|
||||||
|
|
||||||
|
## Core Requirements
|
||||||
|
|
||||||
|
### Cross-Platform Compatibility
|
||||||
|
- Must run on all Dart targets (VM, Web, Flutter)
|
||||||
|
- No dependency on dart:mirrors
|
||||||
|
- Pure Dart implementation for maximum portability
|
||||||
|
|
||||||
|
### Runtime Capabilities Required for Laravel
|
||||||
|
- Dynamic class instantiation with constructor resolution
|
||||||
|
- Property get/set with proper type handling
|
||||||
|
- Method invocation with parameter matching
|
||||||
|
- Annotation/attribute support for Laravel decorators
|
||||||
|
- Service container bindings support
|
||||||
|
- Dependency injection resolution
|
||||||
|
- Route reflection for controllers
|
||||||
|
- Middleware reflection
|
||||||
|
- Model reflection for ORM
|
||||||
|
- Event/listener reflection
|
||||||
|
- Policy/authorization reflection
|
||||||
|
|
||||||
|
## Reference Implementation Inspirations
|
||||||
|
|
||||||
|
### From Dart Mirrors (mirrors.cc/mirrors.dart)
|
||||||
|
- Mirror hierarchy design for clean abstraction
|
||||||
|
- Symbol resolution approach
|
||||||
|
- Type information handling
|
||||||
|
- Method and constructor parameter matching
|
||||||
|
- Library and declaration organization
|
||||||
|
|
||||||
|
### From fake_reflection
|
||||||
|
- Pure runtime reflection techniques
|
||||||
|
- Dynamic instance creation patterns
|
||||||
|
- Property access mechanisms
|
||||||
|
- Method invocation strategies
|
||||||
|
|
||||||
|
## Missing Critical Features to Implement
|
||||||
|
|
||||||
|
### Core Reflection
|
||||||
|
- Dynamic member lookup without hardcoding
|
||||||
|
- Complete constructor resolution system
|
||||||
|
- Proper method parameter matching
|
||||||
|
- Type hierarchy reflection
|
||||||
|
|
||||||
|
### Laravel Support
|
||||||
|
- Service container reflection
|
||||||
|
- Controller action reflection
|
||||||
|
- Model property/relationship reflection
|
||||||
|
- Policy method reflection
|
||||||
|
- Event handler reflection
|
||||||
|
|
||||||
|
### Type System
|
||||||
|
- Generic type handling
|
||||||
|
- Interface/mixin support
|
||||||
|
- Inheritance chain resolution
|
||||||
|
- Type alias support
|
||||||
|
|
||||||
|
### Member Access
|
||||||
|
- Dynamic property access
|
||||||
|
- Flexible method invocation
|
||||||
|
- Static member support
|
||||||
|
- Proper constructor resolution
|
||||||
|
|
||||||
|
## Implementation Plan
|
||||||
|
|
||||||
|
### 1. Enhance Type System
|
||||||
|
- Implement proper type hierarchy reflection
|
||||||
|
- Add generic type support
|
||||||
|
- Support interfaces and mixins
|
||||||
|
- Handle type aliases
|
||||||
|
|
||||||
|
### 2. Improve Member Access
|
||||||
|
- Implement dynamic property access
|
||||||
|
- Add flexible method invocation
|
||||||
|
- Support static members
|
||||||
|
- Enhance constructor resolution
|
||||||
|
|
||||||
|
### 3. Add Laravel-Specific Features
|
||||||
|
- Service container reflection support
|
||||||
|
- Controller reflection capabilities
|
||||||
|
- Model reflection support
|
||||||
|
- Policy/authorization reflection
|
||||||
|
- Event system reflection
|
||||||
|
|
||||||
|
### 4. Optimize Performance
|
||||||
|
- Implement metadata caching
|
||||||
|
- Optimize member lookup
|
||||||
|
- Efficient type checking
|
||||||
|
- Smart instance creation
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
This implementation strategy focuses on building a robust reflection system that can serve as the foundation for our Laravel implementation while maintaining cross-platform compatibility and avoiding dart:mirrors dependencies. The approach draws inspiration from established reflection implementations while addressing the specific needs of our platform.
|
Loading…
Reference in a new issue