• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

thecodingmachine / magic-query / 15536904331

09 Jun 2025 02:25PM UTC coverage: 70.243%. First build
15536904331

push

github

homersimpsons
:construction_worker: Upgrade CI dependencies and activation

1100 of 1566 relevant lines covered (70.24%)

4.89 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Mouf/Database/QueryWriter/Utils/FindParametersService.php
1
<?php
2

3
namespace Mouf\Database\QueryWriter\Utils;
4

5
use Mouf\MoufInstanceDescriptor;
6

7
/**
8
 * This class is used to find conditions recursively inside a MoufInstanceDescriptor.
9
 */
10
class FindParametersService
11
{
12
    /**
13
     * Tries to find parameters recursively in the instances and retrieves the list of parameters found.
14
     *
15
     * @param MoufInstanceDescriptor $instanceDescriptor
16
     *
17
     * @return string[]
18
     */
19
    public static function findParameters(MoufInstanceDescriptor $instanceDescriptor)
20
    {
21
        return array_keys(self::recursiveFindParameters($instanceDescriptor)[1]);
×
22
    }
23

24
    /**
25
     * @param MoufInstanceDescriptor $instanceDescriptor
26
     * @param array<string>          $visitedInstances   The list of names of visited instances.
27
     */
28
    private static function recursiveFindParameters(MoufInstanceDescriptor $instanceDescriptor, array $visitedInstances = array(), array $foundParameters = array()): array
29
    {
30
        if (isset($visitedInstances[$instanceDescriptor->getIdentifierName()])) {
×
31
            return array($visitedInstances, $foundParameters);
×
32
        }
33
        $visitedInstances[$instanceDescriptor->getIdentifierName()] = true;
×
34

35
        if ($instanceDescriptor->getClassDescriptor()->getName() == 'SQLParser\\Node\\Parameter') {
×
36
            $foundParameters[$instanceDescriptor->getProperty('name')->getValue()] = true;
×
37

38
            return array($visitedInstances, $foundParameters);
×
39
        }
40
        if ($instanceDescriptor->getClassDescriptor()->getName() == 'Mouf\\Database\\QueryWriter\\Condition\\ParamAvailableCondition'
×
41
                || $instanceDescriptor->getClassDescriptor()->getName() == 'Mouf\\Database\\QueryWriter\\Condition\\ParamEqualsCondition'
×
42
                || $instanceDescriptor->getClassDescriptor()->getName() == 'Mouf\\Database\\QueryWriter\\Condition\\ParamNotAvailableCondition') {
×
43
            $foundParameters[$instanceDescriptor->getProperty('parameterName')->getValue()] = true;
×
44

45
            return array($visitedInstances, $foundParameters);
×
46
        }
47

48
        $classDescriptor = $instanceDescriptor->getClassDescriptor();
×
49
        /* @var $classDescriptor MoufReflectionClass */
50
        foreach ($classDescriptor->getInjectablePropertiesByConstructor() as $moufPropertyDescriptor) {
×
51
            /* @var $moufPropertyDescriptor MoufPropertyDescriptor */
52
            $name = $moufPropertyDescriptor->getName();
×
53

54
            $value = $instanceDescriptor->getConstructorArgumentProperty($name)->getValue();
×
55
            if ($value instanceof MoufInstanceDescriptor) {
×
56
                list($visitedInstances, $foundParameters) = self::recursiveFindParameters($value, $visitedInstances, $foundParameters);
×
57
            } elseif (is_array($value)) {
×
58
                foreach ($value as $val) {
×
59
                    if ($val instanceof MoufInstanceDescriptor) {
×
60
                        list($visitedInstances, $foundParameters) = self::recursiveFindParameters($val, $visitedInstances, $foundParameters);
×
61
                    }
62
                }
63
            }
64
        }
65

66
        foreach ($classDescriptor->getInjectablePropertiesBySetter() as $moufPropertyDescriptor) {
×
67
            /* @var $moufPropertyDescriptor MoufPropertyDescriptor */
68
            $name = $moufPropertyDescriptor->getName();
×
69

70
            $value = $instanceDescriptor->getSetterProperty($name)->getValue();
×
71
            if ($value instanceof MoufInstanceDescriptor) {
×
72
                list($visitedInstances, $foundParameters) = self::recursiveFindParameters($value, $visitedInstances, $foundParameters);
×
73
            } elseif (is_array($value)) {
×
74
                foreach ($value as $val) {
×
75
                    if ($val instanceof MoufInstanceDescriptor) {
×
76
                        list($visitedInstances, $foundParameters) = self::recursiveFindParameters($val, $visitedInstances, $foundParameters);
×
77
                    }
78
                }
79
            }
80
        }
81

82
        foreach ($classDescriptor->getInjectablePropertiesByPublicProperty() as $moufPropertyDescriptor) {
×
83
            /* @var $moufPropertyDescriptor MoufPropertyDescriptor */
84
            $name = $moufPropertyDescriptor->getName();
×
85

86
            $value = $instanceDescriptor->getInjectablePropertiesByPublicProperty($name)->getValue();
×
87
            if ($value instanceof MoufInstanceDescriptor) {
×
88
                list($visitedInstances, $foundParameters) = self::recursiveFindParameters($value, $visitedInstances, $foundParameters);
×
89
            } elseif (is_array($value)) {
×
90
                foreach ($value as $val) {
×
91
                    if ($val instanceof MoufInstanceDescriptor) {
×
92
                        list($visitedInstances, $foundParameters) = self::recursiveFindParameters($val, $visitedInstances, $foundParameters);
×
93
                    }
94
                }
95
            }
96
        }
97

98
        return array($visitedInstances, $foundParameters);
×
99
    }
100
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc