Implement Atoms RFC for PHP #1
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements atoms - a new primitive type for PHP using :name syntax. Atoms are immutable,
unique symbolic constants that provide identity-based comparison, memory efficiency through
automatic deduplication, and excellent performance for configuration, APIs, and state management.
What are Atoms?
Atoms are symbolic constants similar to symbols in other languages:
Key Features
Array Keys Support
Serialization
Real-world Usage
Performance Benefits
Implementation Highlights
Core Infrastructure
Language Integration
Array System
Serialization
API Functions
atom(string $name): atom // Create atom dynamically
string(atom $atom): string // Convert to string
is_atom(mixed $value): bool // Type checking
atom_exists(string $name): bool // Check if atom exists
get_defined_atoms(): array // List all atoms
Backward Compatibility
Testing
This implementation provides a complete, production-ready atom system that enhances PHP's
expressiveness while maintaining excellent performance and full backward compatibility.