Bug #43200edit

Bug #54367 was fixed in PHP 5.3.7, but we run into a different bug now. Bug #43200 (Interface implementation / inheritence not possible in abstract classes) now becomes a problem. In short, this bug occurs when you combine interfaces with concrete functions that are implemented in an abstract class.

Elasticsearch-php uses both interfaces and abstract classes in this manner. The interfaces provide a contract which all implementing objects must follow. This is important so that users can provide their own implementations for custom logic. By implementing the interface, they are guaranteed that their code will work correctly with the library.

Abstract classes are used to provide common functionality between different classes. For example, many Elasticsearch endpoints (search, get, index, etc) use similar URI parameters such as index and type. Instead of duplicating the code between all these classes, a single abstract class provides concrete implementations of the methods.

This means that the library runs into bug #43200 and is unusable until 5.3.9 when it was fixed.