Hey,

After discussion with Danwe and Denny I decided to rewrite EntityId.

It was the highest risk class according to PHPUnit (290 CRAP) in the DataModel component, which really is bad considering this is one of our most basic classes, which a lot of other code binds itself to. The goal of rewriting it is getting rid of needless complexity, needless bindings and making non-problematic use of the class easier.

The rewrite currently includes:

* Dropping of id prefix configurability (as previously discussed)
* Separation of the id class and the entity id DataValue (EntityId no longer derives from DataValue. A new EntityIdDataValue composites in a EntrityId)
* The EntityId class now has as fields entity type (string) and id serialization (string)
* New ItemId and PropertyId derivatives, which in the constructor only take the id serialization. The long term goal is to make EntityId abstract
* Serialization format compatibility where required. The format of the DataValue will remain the same for now

Comments on the work in progress are welcome: https://gerrit.wikimedia.org/r/#/c/80394/

It is possible this change will be done by tomorrow. More likely it'll only be merged on Monday or later.

Cheers

--
Jeroen De Dauw
http://www.bn2vs.com
Don't panic. Don't be evil. ~=[,,_,,]:3
--