Using the factory
Besides \Jawira\CaseConverter\Convert
you also have at your disposal:
\Jawira\CaseConverter\CaseConverter
\Jawira\CaseConverter\CaseConverterInterface
Instead of using new Convert();
you can use the convenience method from
CaseConverter
class.
In concrete, you have to call \Jawira\CaseConverter\CaseConverter::convert
to
create Convert
objects.
Here an example:
<?php
namespace App;
use Jawira\CaseConverter\CaseConverterInterface;
class MySuperNameCreator
{
protected $cc;
public function __construct(CaseConverterInterface $cc)
{
$this->cc = $cc;
}
public function variableName(string $slug): string
{
// `->convert()` returns a `Convert` object.
$myConvert = $this->cc->convert($slug);
return $myConvert->toCamel();
}
public function constantName(string $slug): string
{
// Of course you can also chain everything.
return $this->cc->convert($slug)->fromKebab()->toMacro();
}
}
Please note that an interface -CaseConverterInterface
- is also provided. If
you are using Symfony you can use this interface with Symfony autowiring
to automatically instantiate CaseConverter
, otherwise if you are working in a
standalone project you should try php-di project.
Using \Jawira\CaseConverter\CaseConverter::convert
is preferred because:
- Usually the
new
operator is considered harmful. - You can easily mock dependencies when writing tests.
- It's SOLID