rfc:object-model-improvements
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rfc:object-model-improvements [2011/02/25 22:37] martinscotta |
rfc:object-model-improvements [2017/09/22 13:28] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Request for Comments: How to write RFCs ====== | + | ====== Request for Comments: Object Model Improvements ====== |
* Version: 1.0 | * Version: 1.0 | ||
- | * Date: 2008-03-06 | + | * Date: 2011-02-24 |
* Author: Martin Scotta <martinscotta@gmail.com> | * Author: Martin Scotta <martinscotta@gmail.com> | ||
* Status: Under Discussion | * Status: Under Discussion | ||
Line 14: | Line 14: | ||
==== Why do we need this ==== | ==== Why do we need this ==== | ||
- | Actual PHP5 object model provides the basic for Object Oriented programming but it lacks for support for library or third parties developer. | + | Actual PHP5 object model provides the basic for Object Oriented programming but it lacks for support for library or third parties developers. |
==== New Features ==== | ==== New Features ==== | ||
- | - Constructors | + | === Constructors === |
* Provide a default empty constructor (if applicable) | * Provide a default empty constructor (if applicable) | ||
* Remove the inheritance | * Remove the inheritance | ||
* Disallow directly calls to them | * Disallow directly calls to them | ||
* Ensure constructor call on parent classes | * Ensure constructor call on parent classes | ||
- | + | === Magic methods === | |
- | - Magic methods: | + | |
* disallow directly call from outer context? | * disallow directly call from outer context? | ||
* markers interfaces | * markers interfaces | ||
- | + | === class / interface === | |
- | - class / interface | + | |
* provide a magic constant with the fully qualified class name | * provide a magic constant with the fully qualified class name | ||
- | <code> | + | <code php> |
+ | namespace Foo { | ||
+ | class Baz {} | ||
+ | } | ||
namespace Test { | namespace Test { | ||
- | class Bar {} | + | use \Foo\Baz; |
- | var_dump( Bar::CLASS ); // string "Test\Bar" | + | |
+ | interface Marker {} | ||
+ | class Bar implements Marker {} | ||
+ | |||
+ | var_dump( Marker::CLASS ); // string "Test\Marker" | ||
+ | var_dump( Baz::CLASS ); // string "Foo\Baz" | ||
+ | var_dump( Bar::CLASS ); // string "Test\Bar" | ||
+ | } | ||
+ | </code> | ||
+ | === errors into exceptions === | ||
+ | * Improve PHP Exception class | ||
+ | * Remove errors/warnings, throw an Exceptions instead | ||
+ | * Better stacks dump | ||
+ | <code php> | ||
+ | try { | ||
+ | include $file; // as of today we just die here | ||
+ | } catch(Exception $e) { | ||
+ | echo $e->getMessage(); | ||
+ | throw new DomainException($e); | ||
} | } | ||
</code> | </code> |
rfc/object-model-improvements.1298673421.txt.gz · Last modified: 2017/09/22 13:28 (external edit)