在构建应用程序时,您可能必须以一种或多种格式(名字,姓氏,缩写等)显示用户名。我创建了一个名为php-person-name的软件包,这将使它在Laravel(或任何PHP框架)中变得更加容易。
它基于Basecamp的超凡人物的name_of_person宝石。他们的申请中也有类似的问题。如果只有名字和姓氏,我们如何以不同的格式显示一个人的名字
它的公共API非常简单,可以在以下代码段中进行总结。
<?php $ name = new PersonName :: make(' David Heinemeier Hansson')echo $ name->完整//" David Heinemeier Hansson" echo $ name->首先//" David" echo $ name->最后//" Heinemeier Hansson" echo $ name->缩写//" DHH" echo $ name->熟悉的//" David H。" echo $ name->缩写//" D。海涅迈尔·汉森(Heinemeier Hansson) echo $ name->排序//" Heinemeier Hansson,David" echo $ name->可以提及// //" davidh" echo $ name->所有格// // David Heinemeier Hansson's"
需要与Laravel集成吗?只需使用以下内容为模型添加名称属性即可。
<?php使用Webstronauts \ PersonName \ PersonName;类用户扩展模型{/ ** *可大量分配的属性。 * * @var数组* / protected $ fillable = [' name' ,' first_name' ,' last_name' ,]; / ** *返回由“ first_name”和“ last_name”属性组成的PersonName实例。 * * @return PersonName * /公共函数getNameAttribute(){返回新的PersonName($ this-> first_name,$ this-> last_name); } / ** *从全名设置`first_name`和`last_name`属性。 * * @param string $ name * @return void * /公共函数setNameAttribute($ name){$ fullName = PersonName :: make($ name); [$ this-> first_name,$ this-> last_name] = $ fullName? [$ fullName->首先,$ fullName-> last]:[null,null]; }}
如您所见,您只需要存储first_name和last_name属性,就可以通过名称生成所有这些变体。
<?php $ user =新用户([' first_name' =>' Robin',' last_name' =>' van der Vleuten&# 39;])echo $ user-> 名称-> 完整//罗宾·范德弗留顿 一个小巧的助手,几乎可以在任何应用程序中使用。 在Github上检查一下,别忘了给它加注星标。