Passed
Push — master ( 902a34...c826a7 )
by Kyle
53s queued 11s
created

Rule/Controversial/CamelCaseParameterName.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * This file is part of PHP Mess Detector.
4
 *
5
 * Copyright (c) Manuel Pichler <[email protected]>.
6
 * All rights reserved.
7
 *
8
 * Licensed under BSD License
9
 * For full copyright and license information, please see the LICENSE file.
10
 * Redistributions of files must retain the above copyright notice.
11
 *
12
 * @author Manuel Pichler <[email protected]>
13
 * @copyright Manuel Pichler. All rights reserved.
14
 * @license https://opensource.org/licenses/bsd-license.php BSD License
15
 * @link http://phpmd.org/
16
 */
17
18
namespace PHPMD\Rule\Controversial;
19
20
use PHPMD\AbstractNode;
21
use PHPMD\AbstractRule;
22
use PHPMD\Rule\FunctionAware;
23
use PHPMD\Rule\MethodAware;
24
25
/**
26
 * This rule class detects parameters not named in camelCase.
27
 *
28
 * @author Francis Besset <[email protected]>
29
 * @since 1.1.0
30
 */
31
class CamelCaseParameterName extends AbstractRule implements MethodAware, FunctionAware
32
{
33
    /**
34
     * This method checks if a parameter is not named in camelCase
35
     * and emits a rule violation.
36
     *
37
     * @param \PHPMD\AbstractNode $node
38
     * @return void
39
     */
40
    public function apply(AbstractNode $node)
41
    {
42
        foreach ($node->getParameters() as $parameter) {
0 ignored issues
show
Documentation Bug introduced by
The method getParameters does not exist on object<PHPMD\AbstractNode>? Since you implemented __call, maybe consider adding a @method annotation.

If you implement __call and you know which methods are available, you can improve IDE auto-completion and static analysis by adding a @method annotation to the class.

This is often the case, when __call is implemented by a parent class and only the child class knows which methods exist:

class ParentClass {
    private $data = array();

    public function __call($method, array $args) {
        if (0 === strpos($method, 'get')) {
            return $this->data[strtolower(substr($method, 3))];
        }

        throw new \LogicException(sprintf('Unsupported method: %s', $method));
    }
}

/**
 * If this class knows which fields exist, you can specify the methods here:
 *
 * @method string getName()
 */
class SomeClass extends ParentClass { }
Loading history...
43
            if (!$this->isValid($parameter->getName())) {
44
                $this->addViolation(
45
                    $node,
46
                    array(
47
                        $parameter->getName(),
48
                    )
49
                );
50
            }
51
        }
52
    }
53
54
    protected function isValid($parameterName)
55
    {
56
        if ($this->getBooleanProperty('allow-underscore')) {
57
            return preg_match('/^\$[_]?[a-z][a-zA-Z0-9]*$/', $parameterName);
58
        }
59
60
        return preg_match('/^\$[a-z][a-zA-Z0-9]*$/', $parameterName);
61
    }
62
}
63