有没有更简单的方法来设置学说中的装置?

亚历克斯·福克斯利

以前,在创建夹具文档以构建网站时(用于测试或没有CMS的网站)。我总是按照示例文档中所示的方式进行操作。因此,灯具页面将有很多重复的代码。像这样(这是一个简短的!):

class codeExampleFixtures  extends AbstractFixture implements OrderedFixtureInterface
{
/**
 * {@inheritDoc}
 */
public function load(ObjectManager $manager)
{
    /*** Begin data fixture ***/
    $code1 = '<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>';        
    // The $exampleX variable can be left empty if not needed.
    $example1 = '<p>In this example. The code is different for the example itself.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>';
    $lang1 = 'html'; // choices are 'html', 'css' and 'js'

    // Do not edit anything else in this fixture.
    $codeExample1 = new codeExample();
    $codeExample1->setlang($lang1);
    $codeExample1->setcodeExample($code1);
    $exampleFixture1 = (empty($example1)) ? $code1 : $example1;
    $codeExample1->settextExample($exampleFixture);
    $manager->persist($codeExample1);
    $this->setReference('ce1', $codeExample1);
    /*** End data fixture ***/

    /*** Begin data fixture ***/
    $code2 = '<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p><p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>';        
    // The $exampleX variable can be left empty if not needed.
    $example2 = Null;
    $lang2 = 'css'; // choices are 'html', 'css' and 'js'

    // Do not edit anything else in this fixture.
    $codeExample2 = new codeExample();
    $codeExample2->setlang($lang2);
    $codeExample2->setcodeExample($code2);
    $exampleFixture2 = (empty($example2)) ? $code2 : $example2;
    $codeExample2->settextExample($exampleFixture2);
    $manager->persist($codeExample2);
    $this->setReference('ce2', $codeExample2);
    /*** End data fixture ***/

    $manager->flush(); //Upload the data to the database.
}

我决定重构它,我认为我的结果可能对其他做类似事情的人有用。我敢肯定有很多方法可以改善它(我很高兴听到他们的声音!),我敢肯定会有很多人已经考虑过自己做类似的事情,但是如果对您有用的话,请随意使用它 :)

亚历克斯·福克斯利

首先,我在类中添加了一个名为createFixture()的方法:

public function createFixture($code, $example, $lang) {
    $codeExample = new codeExample();
    $codeExample->setlang($lang);
    $codeExample->setcodeExample($code);
    $exampleFixture = (empty($example)) ? $code : $example;
    $codeExample->settextExample($exampleFixture);
    return $codeExample;
}

然后剩下的就是将固定装置放进去。如您所见,大大减少了重复的代码:

/*** Begin data fixture ***/
    $fixture = $this->createFixture(
        "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 
        fugiat nulla pariatur.</p>", 
        "<p>In this example. The code is different from the example itself.</p>
        <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 
        fugiat nulla pariatur.</p>", 
        "html"
    );
    /* in order to reference this later, specify a simple and uniqe key for this fixture */
    $this->setReference('ce1', $fixture);
    $manager->persist($fixture);
    /*** End data fixture ***/

    /*** Begin data fixture ***/
    $fixture = $this->createFixture(
        "<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
        incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
        exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
        <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 
        fugiat nulla pariatur.</p>", 
        "", 
        "css"
    );
    /* in order to reference this later, specify a simple and uniqe key for this fixture */
    $this->setReference('ce2', $fixture);
    $manager->persist($fixture);
    /*** End data fixture ***/

显然,您必须为每种不同类型的灯具重新编写一些代码,但是原理是相同的。

我的完整夹具文件可以在这里找到:https : //gist.github.com/alexward1981/6827216

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有更简单的方法来设置我的应用程序的PreferredStatusBarStyle?

来自分类Dev

有没有更简单的方法来设置字符串字符的整数?

来自分类Dev

有没有更简单的方法来设置我的应用程序的PreferredStatusBarStyle?

来自分类Dev

有没有更简单的方法来通过对象解构来分配这个变量?

来自分类Dev

有没有更简单的方法来grep目录下的所有文件?

来自分类Dev

有没有更简单的方法来创建具有给定结构的链表?

来自分类Dev

有没有简单的方法来检查内存?

来自分类Dev

有没有简单的方法来为sudo shell设置背景?

来自分类Dev

有没有更简单的方法来查看/搜索GAC中的内容?

来自分类Dev

有没有更简单的方法来检查属性的存在?

来自分类Dev

有没有更简单的方法来取消嵌套数组?

来自分类Dev

有没有更简单的方法来查看对象是否为空?

来自分类Dev

Laravel / Ardent:有没有更简单的方法来定制错误消息?

来自分类Dev

有没有更简单的方法来编写此查询?[MS SQL Server]

来自分类Dev

有没有比使用数组更简单的方法来拆分字符串?

来自分类Dev

有没有更简单的方法来控制文本阴影的强度?

来自分类Dev

有没有更简单的方法来更改熊猫数据框的索引值?

来自分类Dev

有没有更简单的方法来对矩阵求和和分组?

来自分类Dev

包含数组的对象-有没有更简单的方法来编写此通用模式

来自分类Dev

有没有更简单的方法来返回ActiveRecord结果集的belongs_to关系?

来自分类Dev

Laravel / Ardent:有没有更简单的方法来定制错误消息?

来自分类Dev

有没有更简单的方法来制作此可扩展菜单?

来自分类Dev

有没有更简单的方法来编写此查询?[MS SQL Server]

来自分类Dev

有没有更简单的方法来登录域工作站上的本地帐户?

来自分类Dev

有没有更简单的方法来更改和使用全局变量?

来自分类Dev

在Arch Linux中,有没有更简单的方法来卸载软件包?

来自分类Dev

有没有更简单的方法来编写scrollTop动画?

来自分类Dev

有没有更简单的方法来颠倒DataGridViewSelectedRowCollection的顺序?

来自分类Dev

有没有更简单的方法来调试余烬插件

Related 相关文章

  1. 1

    有没有更简单的方法来设置我的应用程序的PreferredStatusBarStyle?

  2. 2

    有没有更简单的方法来设置字符串字符的整数?

  3. 3

    有没有更简单的方法来设置我的应用程序的PreferredStatusBarStyle?

  4. 4

    有没有更简单的方法来通过对象解构来分配这个变量?

  5. 5

    有没有更简单的方法来grep目录下的所有文件?

  6. 6

    有没有更简单的方法来创建具有给定结构的链表?

  7. 7

    有没有简单的方法来检查内存?

  8. 8

    有没有简单的方法来为sudo shell设置背景?

  9. 9

    有没有更简单的方法来查看/搜索GAC中的内容?

  10. 10

    有没有更简单的方法来检查属性的存在?

  11. 11

    有没有更简单的方法来取消嵌套数组?

  12. 12

    有没有更简单的方法来查看对象是否为空?

  13. 13

    Laravel / Ardent:有没有更简单的方法来定制错误消息?

  14. 14

    有没有更简单的方法来编写此查询?[MS SQL Server]

  15. 15

    有没有比使用数组更简单的方法来拆分字符串?

  16. 16

    有没有更简单的方法来控制文本阴影的强度?

  17. 17

    有没有更简单的方法来更改熊猫数据框的索引值?

  18. 18

    有没有更简单的方法来对矩阵求和和分组?

  19. 19

    包含数组的对象-有没有更简单的方法来编写此通用模式

  20. 20

    有没有更简单的方法来返回ActiveRecord结果集的belongs_to关系?

  21. 21

    Laravel / Ardent:有没有更简单的方法来定制错误消息?

  22. 22

    有没有更简单的方法来制作此可扩展菜单?

  23. 23

    有没有更简单的方法来编写此查询?[MS SQL Server]

  24. 24

    有没有更简单的方法来登录域工作站上的本地帐户?

  25. 25

    有没有更简单的方法来更改和使用全局变量?

  26. 26

    在Arch Linux中,有没有更简单的方法来卸载软件包?

  27. 27

    有没有更简单的方法来编写scrollTop动画?

  28. 28

    有没有更简单的方法来颠倒DataGridViewSelectedRowCollection的顺序?

  29. 29

    有没有更简单的方法来调试余烬插件

热门标签

归档