Firstly I added a method to the class called 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;
}
Then all that was left was to put the fixtures into it. As you can see, the repeated code is drastically reduced:
/*** 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 ***/
Obviously you'd have to rewrite this a little for each different type of fixture but the principle is the same.
My full fixtures file can be found here: https://gist.github.com/alexward1981/6827216