====== PHP RFC: Comparator interface ====== * Version: 0.1 * Date: 2016-09-26 * Author: Ben Scholzen, mail@dasprids.de * Status: Inactive * First Published at: http://wiki.php.net/rfc/comparator_interface ===== Introduction ===== The internal DateTime and ImmutableDateTime classes have an internal compare_objects() method, which allows them to be directly compared with the usual comparison operators (''<'', ''<='', ''=='', ''>'' and ''>=''). This is currently not possible to implement with user defined classes, which this RFC tries to solve. ===== Proposal ===== Following the example of similar interface which enhance the internal functionality of a user class, this RFC proposes to have an API interface, which the Zend engine can use to compare two objects of the same type: interface Comparator { public function compare($other) : int; } The value of the compare() method must be either smaller than 0 if the object the function is called on is smaller than $other, 0 if both are considered equal or else an integer larger than 0. Thus, when a user tries to compare two objects with the normal comparison operators, PHP will internally call the compare() method of the first operand and pass the second operand as method parameter. ===== Proposed PHP Version(s) ===== Poposed for the next PHP 7.x. ===== Patches and Tests ===== A pull request with an interface, targeting master, is here: https://github.com/php/php-src/pull/2143 ===== Vote ===== As this is a language change, a 2/3 majority is required. A straight Yes/No vote is being held. ===== Rejected Features ===== Keep this updated with features that were discussed on the mail lists.