ddd / slug
v1.0
2013-08-15 13:34 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-09 13:01:18 UTC
README
Slug 是一个组件,可以轻松生成任何持久化机制下的 slugs(Propel2、Doctrine2、自定义 ORM 等)。
生成字符串的 slug 总共有两步
- 转写步骤,将给定的字符串从任何书写系统(法语、德语、希腊语、阿拉伯语...)转换为 ASCII 表示形式。
- slug 生成步骤,基本上是使用自定义分隔符分隔每个单词和字段。
因此,Slug 组件有 2 个服务:TransliteratorInterface
和 SlugGeneratorInterface
。每个这些服务都可以有多个实现
LatinTransliterator
:将用任何拉丁字母表(法语、德语、西班牙语...)写的字符串转写为其 ASCII 等价物。DefaultSlugGenerator
:自定义单词和字段分隔符。PatternSlugGenerator
:完全自定义 slug 生成。
安装
使用 Composer,只需要求 ddd/components
包
{ "require": { "ddd/components": "dev-master" } }
用法
要能够将实体或模型转换为 slug,您只需实现 SluggableInterface
<?php use Ddd\Slug\Model\SluggableInterface; use Ddd\Slug\Service\SlugGeneratorInterface; class Article implements SluggableInterface { private $createdAt; private $title; private $slug; public function slugify(SlugGeneratorInterface $slugifier) { $this->slug = $slugifier->slugify(array($this->createdAt->format('Y'), $this->title)); } // other methods... }
然后,您只需调用 slugify
方法来生成 slug
use Ddd\Slug\Infra\SlugGenerator\DefaultSlugGenerator; use Ddd\Slug\Infra\Transliterator\LatinTransliterator; $article = new Article(); $article->setTitle('Hello world!'); $article->slugify(new DefaultSlugGenerator(array(new LatinTransliterator()))); echo $article->getSlug(); // writes "2013-hello-world"
致谢
- Joseph Rouff rouffj@gmail.com
- Jean-François Simon contact@jfsimon.fr