- levenshtein: documentation ( source)
- array_search: documentation ( source)
- get_class_methods: documentation ( source)
- min: documentation ( source)
<?php
trait Levenshteinable {
public function __call($name, $arguments) {
$levenshteins = [];
foreach (get_class_methods(static::class) as $method) {
$levenshteins[$method] = levenshtein($method, $name);
}
return [$this, array_search(min($levenshteins), $levenshteins)](...$arguments);
}
}
class LevenshteinableDateTime extends DateTime {
use Levenshteinable;
}
$dt = new LevenshteinableDateTime;
echo $dt->fomrat('r');