symfony 除了在构造函数中使用Slugger接口之外,还可以使用它吗?

sg24os4d  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(104)

我希望在类中使用sluggerInterface。但我希望保留:

public function __construct()
    {
    }

所以我想在我的类中使用sluggerInterface,而不在我的构造函数中添加任何参数。(这是为了在创建对象时自动创建1个slug)。
所以我想要一个不同于这个的代码:

use Symfony\Component\String\Slugger\SluggerInterface;

    class MyService
    {
        private $slugger;
    
        public function __construct(SluggerInterface $slugger)
        {
            $this->slugger = $slugger;
        }
    
        public function someMethod()
        {
            $slug = $this->slugger->slug('...');
        }
    }

谢谢你,谢谢你

lymnna71

lymnna711#

您不想在构造函数中使用自动装配吗?
您可以创建一个新的强击手,例如使用Symfony\Component\String\Slugger\AsciiSlugger;

$slugger = new AsciiSlugger();
$slugger->slug('Please slug this.')->toString();

或者,您也可以使用@required注解(或PHP 8+的属性#[Required])将自动装配与另一个方法一起使用

private $slugger;

#[Required]
public function setSlugger(SluggerInterface $slugger): void
{
    $this->slugger= $slugger;
}

这是为了在创建对象时自动创建1个嵌条
您可能还希望查看事件侦听器,使用doctrine事件prePersist在持久化时对实体进行重命名可能是另一种想法。
最后,您可能也会对gedmo doctrine-extensions sluggable感兴趣。

相关问题