Scenario::load()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 26
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 21
nc 2
nop 1
dl 0
loc 26
rs 9.584
c 0
b 0
f 0
1
<?php
2
3
namespace App\Fixture;
4
5
use App\Entity\Service;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, App\Fixture\Service. Consider defining an alias.

Let?s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let?s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
use App\Entity\Scenario as ScenarioEntity;
7
use Doctrine\Common\Persistence\ObjectManager;
0 ignored issues
show
Bug introduced by
The type Doctrine\Common\Persistence\ObjectManager was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use Ds\Component\Database\Fixture\Yaml;
0 ignored issues
show
Bug introduced by
The type Ds\Component\Database\Fixture\Yaml was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
10
/**
11
 * Trait Scenario
12
 */
13
trait Scenario
14
{
15
    use Yaml;
16
17
    /**
18
     * @var string
19
     */
20
    private $path;
21
22
    /**
23
     * {@inheritdoc}
24
     */
25
    public function load(ObjectManager $manager)
26
    {
27
        $objects = $this->parse($this->path);
28
29
        foreach ($objects as $object) {
30
            $service = $manager->getRepository(Service::class)->findOneBy(['uuid' => $object->service]);
31
            $scenario = new ScenarioEntity;
32
            $scenario
33
                ->setService($service)
34
                ->setType($object->type)
35
                ->setConfig((array) $object->config)
36
                ->setUuid($object->uuid)
37
                ->setOwner($object->owner)
38
                ->setOwnerUuid($object->owner_uuid)
39
                ->setSlug($object->slug)
40
                ->setTitle((array) $object->title)
41
                ->setDescription((array) $object->description)
42
                ->setPresentation((array) $object->presentation)
43
                ->setData(json_decode(json_encode($object->data), true))
44
                ->setEnabled($object->enabled)
45
                ->setWeight($object->weight)
46
                ->setTenant($object->tenant);
47
            $manager->persist($scenario);
48
        }
49
50
        $manager->flush();
51
    }
52
}
53