Author(s):
- Colin Stevens (me)
- Colin Stevens (myself), and
- Colin Stevens (I)
This documentation seeks to examine specifically the differences in PHP and Python in regard to Object Oriented concepts.
- Language Purpose/Genesis
- Why was the language created?
- What problems does the language address?
- Is the language a reaction to previous languages or intended as a language replacement?
- Unique Features
- Does the language have any unique features?
- Name Spaces
- How are name spaces implemented?
- How are name spaces used?
- Types
- What types does the language support?
- Are reference and value types supported?
- Can new value types be created?
- Classes
- Definition
- New instances of a class
- Class construction/initialization
- Class deconstruction/deinitialization
- Instance Reference
- How are names referenced from within objects?
- Object Properties
- Getters and setters
- Do backing variables exist?
- Do computed properties exist?
- Interfaces/Protocols
- Does the language support interfaces/protocols?
- If so, what abilities do they have?
- If they exist, how are interfaces/protocols used?
- Inheritance/Extension
- How are classes inherited/extended?
- Reflection
- What reflection abilities are supported?
- How is reflection used?
- Memory Management
- How is memory handled?
- How does memory management work?
- Is there a garbage collection service?
- Is there automatic reference counting?
- Comparisons of References and Values
- How are values compared?
- Null/Nil References
- What does the language call these?
- What are the features of handling these?
- Errors and Exception Handling
- How are errors/exceptions treated?
- Lambda Expressions and Closures
- How do lambda expressions work?
- How do closures expressions work?
- Listeners and Event Handlers
- How are listeners/event handlers implemented?
- Singletons
- How are singletons implemented?
- Can they be made thread safe?
- Can the singleton instance be lazily instantiated?
- Procedural Programming
- Does the language support procedural programming?
- Functional Programming
- Does the language support functional programming?
- Multithreading
- How is multitasking accomplished?
- How do threads or thread-like abilities work?