for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Doctrine\Inflector;
use function lcfirst;
use function preg_replace;
use function str_replace;
use function strtolower;
use function ucwords;
class Inflect implements InflectInterface
{
/** @var Singularizer */
private $singularizer;
/** @var Pluralizer */
private $pluralizer;
public function __construct(Singularizer $singularizer, Pluralizer $pluralizer)
$this->singularizer = $singularizer;
$this->pluralizer = $pluralizer;
}
/**
* {@inheritdoc}
*/
public function tableize(string $word) : string
return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $word));
public function classify(string $word) : string
return str_replace([' ', '_', '-'], '', ucwords($word, ' _-'));
public function camelize(string $word) : string
return lcfirst($this->classify($word));
public function ucwords(string $string, string $delimiters = " \n\t\r\0\x0B-") : string
return ucwords($string, $delimiters);
public function pluralize(string $word) : string
return $this->pluralizer->inflect($word);
public function singularize(string $word) : string
return $this->singularizer->inflect($word);