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

api-platform / core / 15255731762

26 May 2025 01:55PM UTC coverage: 0.0% (-26.5%) from 26.526%
15255731762

Pull #7176

github

web-flow
Merge 66f6cf4d2 into 79edced67
Pull Request #7176: Merge 4.1

0 of 387 new or added lines in 28 files covered. (0.0%)

11394 existing lines in 372 files now uncovered.

0 of 51334 relevant lines covered (0.0%)

0.0 hits per line

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

0.0
/src/Doctrine/Common/State/LinksHandlerLocatorTrait.php
1
<?php
2

3
/*
4
 * This file is part of the API Platform project.
5
 *
6
 * (c) Kévin Dunglas <dunglas@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
declare(strict_types=1);
13

14
namespace ApiPlatform\Doctrine\Common\State;
15

16
use ApiPlatform\Metadata\Exception\RuntimeException;
17
use ApiPlatform\Metadata\Operation;
18
use Psr\Container\ContainerInterface;
19

20
/**
21
 * @internal
22
 */
23
trait LinksHandlerLocatorTrait
24
{
25
    private ?ContainerInterface $handleLinksLocator;
26

27
    private function getLinksHandler(Operation $operation): ?callable
28
    {
UNCOV
29
        if (!($options = $operation->getStateOptions()) || !$options instanceof Options) {
×
30
            return null;
×
31
        }
32

UNCOV
33
        $handleLinks = $options->getHandleLinks();
×
UNCOV
34
        if (\is_callable($handleLinks)) {
×
UNCOV
35
            return $handleLinks;
×
36
        }
37

UNCOV
38
        if (\is_array($handleLinks) && 2 === \count($handleLinks) && class_exists($handleLinks[0])) {
×
39
            [$className, $methodName] = $handleLinks;
×
40

41
            if (method_exists($className, $methodName)) {
×
42
                return $handleLinks;
×
43
            }
44

45
            $suggestedMethod = $this->findSimilarMethod($className, $methodName);
×
46

47
            throw new RuntimeException(\sprintf('Method "%s" does not exist in class "%s".%s', $methodName, $className, $suggestedMethod ? \sprintf(' Did you mean "%s"?', $suggestedMethod) : ''));
×
48
        }
49

UNCOV
50
        if ($this->handleLinksLocator && \is_string($handleLinks) && $this->handleLinksLocator->has($handleLinks)) {
×
UNCOV
51
            return [$this->handleLinksLocator->get($handleLinks), 'handleLinks'];
×
52
        }
53

54
        throw new RuntimeException(\sprintf('Could not find handleLinks service "%s"', $handleLinks));
×
55
    }
56

57
    private function findSimilarMethod(string $className, string $methodName): ?string
58
    {
59
        $methods = get_class_methods($className);
×
60

61
        $similarMethods = array_filter($methods, function ($method) use ($methodName) {
×
62
            return levenshtein($methodName, $method) <= 3;
×
63
        });
×
64

65
        return $similarMethods ? reset($similarMethods) : null;
×
66
    }
67
}
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