WoltLab/WCF — pull request #660 by Gravatronics (2012-06-30 14:41:19+00:00)
Title: Adds two new database object interfaces

The two new database object interfaces are:

- `wcf\data\ILinkableDatabaseObject`
- `wcf\data\ITitledDatabaseObject`

These interfaces mainly exist to avoid the problem of extending two different interfaces with the same method.

For example, a certain database object implements `wcf\system\request\IRouteController` which has a method `getTitle()` and also implements another interface (e.g. `wcf\data\IOtherDatabaseObject`) which requires the same method. PHP can't handle that: `Can't inherit abstract function IRouteableDatabaseObject::getTitle() (previously declared abstract in IOtherDatabaseObject)`.

If both interfaces extend the `wcf\data\ITitledDatabaseObject` interface, PHP has no problem since there's only one `getTitle()` method, not two, and this avoids having to rename the `getTitle()` method in the second interface to a (hopefully) unique name like `getOtherTitle()` which would also pollute the class with methods doing the same thing, just having a different name.

`ILikeObject` might also extend these interfaces.