references_parameters::__set()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 2
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * ****************************************************************************
4
 * references - MODULE FOR XOOPS
5
 * Copyright (c) Hervé Thouzard of Instant Zero (http://www.instant-zero.com)
6
 *
7
 * You may not change or alter any portion of this comment or credits
8
 * of supporting developers from this source code or any supporting source code
9
 * which is considered copyrighted (c) material of the original comment or credit authors.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
 *
14
 * @copyright       Hervé Thouzard of Instant Zero (http://www.instant-zero.com)
15
 * @license         http://www.fsf.org/copyleft/gpl.html GNU public license
16
 * @package         references
17
 * @author          Hervé Thouzard of Instant Zero (http://www.instant-zero.com)
18
 *
19
 * ****************************************************************************
20
 */
21
22
/**
23
 * Class used for parameters passing to classes methods
24
 *
25
 * @copyright       Hervé Thouzard of Instant Zero (http://www.instant-zero.com)
26
 * @license         http://www.fsf.org/copyleft/gpl.html GNU public license
27
 * @package         references
28
 * @author          Hervé Thouzard of Instant Zero (http://www.instant-zero.com)
29
 *
30
 */
31
class references_parameters extends ArrayObject
32
{
33
    /**
34
     * Permet de valoriser un indice de la classe comme si c'était une propriété de la classe
35
     *
36
     * @example $enregistrement->nom_du_champ = 'ma chaine'
37
     *
38
     * @param string $key   Le nom du champ à traiter
39
     * @param mixed  $value La valeur à lui attribuer
40
     * @return object
41
     */
42
    public function __set($key, $value)
43
    {
44
        parent::offsetSet($key, $value);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (offsetSet() instead of __set()). Are you sure this is correct? If so, you might want to change this to $this->offsetSet().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
45
46
        return $this;
47
    }
48
49
    /**
50
     * Valorisation d'un indice de la classe en utilisant un appel de fonction basé sur le principe suivant :
51
     *      $maClasse->setLimit(10);
52
     * Il est possible de chainer comme ceci : $maClasse->setStart(0)->setLimit(10);
53
     *
54
     * @param  string $method
55
     * @param  mixed  $args
56
     * @return object
57
     */
58
    public function __call($method, $args)
59
    {
60
        if (substr($method, 0, 3) === 'set') {
61
            parent::offsetSet(strtolower(substr($method, 3, 1)) . substr($method, 4), $args[0]);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (offsetSet() instead of __call()). Are you sure this is correct? If so, you might want to change this to $this->offsetSet().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
62
63
            return $this;
64
        } else {    // Affichage de la valeur
65
66
            return parent::offsetGet($method);
0 ignored issues
show
Comprehensibility Bug introduced by
It seems like you call parent on a different method (offsetGet() instead of __call()). Are you sure this is correct? If so, you might want to change this to $this->offsetGet().

This check looks for a call to a parent method whose name is different than the method from which it is called.

Consider the following code:

class Daddy
{
    protected function getFirstName()
    {
        return "Eidur";
    }

    protected function getSurName()
    {
        return "Gudjohnsen";
    }
}

class Son
{
    public function getFirstName()
    {
        return parent::getSurname();
    }
}

The getFirstName() method in the Son calls the wrong method in the parent class.

Loading history...
67
        }
68
    }
69
70
    /**
71
     * Méthode qui essaye de faire la même chose que la méthode extend() de jQuery
72
     *
73
     * On lui passe les valeurs par défaut que l'on attend et la méthode les compare avec les valeurs actuelles
74
     * Si des valeurs manquent, elles sont ajoutées
75
     *
76
     * @param  references_parameters $defaultValues
0 ignored issues
show
Documentation introduced by
Should the type for parameter $defaultValues not be self?

This check looks for @param annotations where the type inferred by our type inference engine differs from the declared type.

It makes a suggestion as to what type it considers more descriptive.

Most often this is a case of a parameter that can be null in addition to its declared types.

Loading history...
77
     * @return references_parameters
78
     */
79
    public function extend(self $defaultValues)
80
    {
81
        $result = new self;
0 ignored issues
show
Unused Code introduced by
$result is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
82
        $result = $this;
83
        foreach ($defaultValues as $key => $value) {
84
            if (!isset($result[$key])) {
85
                $result[$key] = $value;
86
            }
87
        }
88
89
        return $result;
90
    }
91
}
92