for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Doctrine\Inflector\Rules;
class Ruleset
{
/** @var Rules */
private $rules;
/** @var Uninflected */
private $uninflected;
/** @var Irregular */
private $irregular;
public function __construct(Rules $rules, Uninflected $uninflected, Irregular $irregular)
$this->rules = $rules;
$this->uninflected = $uninflected;
$this->irregular = $irregular;
}
public function getRules() : Rules
return $this->rules;
public function getUninflected() : Uninflected
return $this->uninflected;
public function getIrregular() : Irregular
return $this->irregular;
/**
* Adds custom inflection rules.
*
* $singularRuleset->addRules(['/^(inflect)or$/i' => '\1ables']);
* $pluralRuleset->addRules([
* 'rules' => ['/^(inflect)ors$/i' => '\1ables'],
* 'uninflected' => ['dontinflectme'],
* 'irregular' => ['red' => 'redlings']
* ]);
* @param mixed[] $rules
*/
public function addRules(array $rules) : void
if ($this->isFullSyntax($rules)) {
$this->rules = isset($rules['rules']) ? new Rules($rules['rules']) : $this->rules;
$this->uninflected = isset($rules['uninflected']) ? new Uninflected($rules['uninflected']) : $this->uninflected;
$this->irregular = isset($rules['irregular']) ? new Irregular($rules['irregular']) : $this->irregular;
} else {
$this->rules = new Rules($rules);
private function isFullSyntax(array $rules) : bool
return isset($rules['rules']) || isset($rules['irregular']) || isset($rules['uninflected']);