gpt4 book ai didi

php - 在 hautelook/AliceBundle 中将对象属性与字符串连接

转载 作者:可可西里 更新时间:2023-11-01 00:20:21 29 4
gpt4 key购买 nike

我在 Symfony 2 包中使用 Alice 来加载固定装置。我正在尝试使用父实体的名称自定义实体的名称。具体来说,我有一个实体 @Report1,其 @Report1->name 属性返回 Test Report 1

我正在尝试创建一个名为 Test Report 1 Scenario 1 的子实体。这是我的 fixture 文件片段:

AppBundle\Entity\Scenario:
Scenario1:
report_id: @Report1->id
name: @Report1->name 'Scenario 1'

我得到的只是文字 @Report1->name 'Scenario 1'

如果我从 name: 属性中删除 'Scenario 1' 字符串,我将获得父报表的实际名称。

最佳答案

我正在使用 hautelook/alice-bundle 1.3.1(nelmio/alice 2.2.0 和 fzaninotto/faker 1.6.0)和 php 5.6

您可以使用 variable-length arguments list 配置自定义数据提供程序并在您的灯具文件中使用它。

在 AppBundle/DataFixtures/ORM/DataLoader.php 中:

namespace AppBundle\DataFixtures\ORM;

use Hautelook\AliceBundle\Doctrine\DataFixtures\AbstractLoader;

class DataLoader extends AbstractLoader
{
/**
* {@inheritdoc}
*/
public function getFixtures()
{
return [
__DIR__.'/../Fixtures/user.yml',
];
}

public function concat(...$strings)
{
$result = '';

foreach ($strings as $string) {
$result .= $string;
}

return $result;
}
}

现在您可以像这样使用自定义数据提供程序了。

在 AppBundle/DataFixtures/Fixtures/user.yml 中:

AppBundle\Entity\User:
user-{1..10}:
firstname: <firstname()>
lastname: <lastname()>

email: <concat(@self->firstname, ".", @self->lastname, "@gmail.com")>
plainPassword: 123
username: <concat(@self->firstname, ".", @self->lastname)>

写起来有点乏味,但是很管用。

对于 php 5.6 之前的 php 版本,您可以使用 func_get_args()获取 DataLoader.php 中的参数列表,如下所示:

    public function concat()
{
$result = '';

foreach (func_get_args() as $string) {
$result .= $string;
}

return $result;
}

关于php - 在 hautelook/AliceBundle 中将对象属性与字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27752991/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com