rfc:object-model-improvements

Request for Comments: Object Model Improvements

Introduction

The purpose of RFCs is to improve the current PHP5 object model.

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 developers.

New Features

Constructors

  • Provide a default empty constructor (if applicable)
  • Remove the inheritance
  • Disallow directly calls to them
  • Ensure constructor call on parent classes

Magic methods

  • disallow directly call from outer context?
  • markers interfaces

class / interface

  • provide a magic constant with the fully qualified class name
namespace Foo {
	class Baz {} 
}
namespace Test { 
	use \Foo\Baz;
 
	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"
}
 

errors into exceptions

  • Improve PHP Exception class
  • Remove errors/warnings, throw an Exceptions instead
  • Better stacks dump
try {
	include $file; // as of today we just die here
} catch(Exception $e) {
	echo $e->getMessage();
	throw new DomainException($e);
}
 

Changelog

rfc/object-model-improvements.txt · Last modified: 2017/09/22 13:28 (external edit)