diff --git a/composer.json b/composer.json index ff8e024c03e8..ce56ed8557e0 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "doctrine/inflector": "^1.1", + "doctrine/inflector": "^1.4|^2.0", "dragonmantank/cron-expression": "^2.0", "egulias/email-validator": "^2.1.10", "league/commonmark": "^1.3", diff --git a/src/Illuminate/Support/Pluralizer.php b/src/Illuminate/Support/Pluralizer.php index 9badfc59ee89..03719d4e22d8 100755 --- a/src/Illuminate/Support/Pluralizer.php +++ b/src/Illuminate/Support/Pluralizer.php @@ -2,7 +2,10 @@ namespace Illuminate\Support; -use Doctrine\Common\Inflector\Inflector; +use Doctrine\Inflector\CachedWordInflector; +use Doctrine\Inflector\Inflector; +use Doctrine\Inflector\Rules\English; +use Doctrine\Inflector\RulesetInflector; class Pluralizer { @@ -70,7 +73,7 @@ public static function plural($value, $count = 2) return $value; } - $plural = Inflector::pluralize($value); + $plural = static::inflector()->pluralize($value); return static::matchCase($plural, $value); } @@ -83,7 +86,7 @@ public static function plural($value, $count = 2) */ public static function singular($value) { - $singular = Inflector::singularize($value); + $singular = static::inflector()->singularize($value); return static::matchCase($singular, $value); } @@ -118,4 +121,27 @@ protected static function matchCase($value, $comparison) return $value; } + + /** + * Get the inflector instance. + * + * @return \Doctrine\Inflector\Inflector + */ + public static function inflector() + { + static $inflector; + + if (is_null($inflector)) { + $inflector = new Inflector( + new CachedWordInflector(new RulesetInflector( + English\Rules::getSingularRuleset() + )), + new CachedWordInflector(new RulesetInflector( + English\Rules::getPluralRuleset() + )) + ); + } + + return $inflector; + } } diff --git a/src/Illuminate/Support/composer.json b/src/Illuminate/Support/composer.json index a026ec633dd0..828c6e7f95b3 100644 --- a/src/Illuminate/Support/composer.json +++ b/src/Illuminate/Support/composer.json @@ -17,7 +17,7 @@ "php": "^7.2", "ext-json": "*", "ext-mbstring": "*", - "doctrine/inflector": "^1.1", + "doctrine/inflector": "^1.4|^2.0", "illuminate/contracts": "^6.0", "nesbot/carbon": "^2.0" },