Completed
Push — master ( 75987c...9815fc )
by Valeriy
05:30
created

UserHelper::buildUserData()   B

Complexity

Conditions 5
Paths 6

Size

Total Lines 24
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 24
rs 8.5125
cc 5
eloc 13
nc 6
nop 1
1
<?php
2
3
namespace Ftrrtf\RollbarBundle\Helper;
4
5
use Symfony\Component\Security\Core\User\UserInterface;
6
7
class UserHelper
8
{
9
    /**
10
     * Get current user info.
11
     *
12
     * @param string|UserInterface $user
13
     *
14
     * @return null|array
15
     */
16
    public function buildUserData($user)
17
    {
18
        if (is_string($user)) {
19
            return array(
20
                'id' => $user,
21
            );
22
        }
23
24
        if (!($user instanceof UserInterface)) {
25
            return array();
26
        }
27
28
        $userData['id'] = method_exists($user, 'getId')
1 ignored issue
show
Coding Style Comprehensibility introduced by
$userData was never initialized. Although not strictly required by PHP, it is generally a good practice to add $userData = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
29
            ? $user->getId()
1 ignored issue
show
Bug introduced by
The method getId() does not seem to exist on object<Symfony\Component...ore\User\UserInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
30
            : $user->getUsername();
31
32
        $userData['username'] = $user->getUsername();
33
34
        if (method_exists($user, 'getEmail')) {
35
            $userData['email'] = $user->getEmail();
1 ignored issue
show
Bug introduced by
The method getEmail() does not seem to exist on object<Symfony\Component...ore\User\UserInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
36
        }
37
38
        return $userData;
39
    }
40
}
41