abstract class Collation {
static $instance;
+ /**
+ * @return Collation
+ */
static function singleton() {
if ( !self::$instance ) {
global $wgCategoryCollation;
return self::$instance;
}
+ /**
+ * @throws MWException
+ * @param $collationName string
+ * @return Collation
+ */
static function factory( $collationName ) {
switch( $collationName ) {
case 'uppercase':
* Given a string, convert it to a (hopefully short) key that can be used
* for efficient sorting. A binary sort according to the sortkeys
* corresponds to a logical sort of the corresponding strings. Current
- * code expects that a null character should sort before all others, but
+ * code expects that a line feed character should sort before all others, but
* has no other particular expectations (and that one can be changed if
* necessary).
*
}
function getSortKey( $string ) {
+ // intl extension produces non null-terminated
+ // strings. Appending '' fixes it so that it doesn't generate
+ // a warning on each access in debug php.
wfSuppressWarnings();
$key = $this->mainCollator->getSortKey( $string ) . '';
wfRestoreWarnings();
* Do a binary search, and return the index of the largest item that sorts
* less than or equal to the target value.
*
- * @param $valueCallback A function to call to get the value with
+ * @param $valueCallback array A function to call to get the value with
* a given array index.
- * @param $valueCount The number of items accessible via $valueCallback,
+ * @param $valueCount int The number of items accessible via $valueCallback,
* indexed from 0 to $valueCount - 1
- * @param $comparisonCallback A callback to compare two values, returning
+ * @param $comparisonCallback array A callback to compare two values, returning
* -1, 0 or 1 in the style of strcmp().
- * @param $target The target value to find.
+ * @param $target string The target value to find.
*
* @return The item index of the lower bound, or false if the target value
* sorts before all items.