Passed
Push — master ( 2d5b6d...8a7d5c )
by Gaetano
11:38
created

handlersContainer::phpWarningGenerator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 10
1
<?php
2
/**
3
 * Defines functions and signatures which can be registered as methods exposed by an XML-RPC Server
4
 *
5
 * To use this, use something akin to:
6
 * $signatures = include('wrapper.php');
7
 * NB: requires 'functions.php' to be included first
8
 *
9
 * Wrap methods of xml-rpc-unaware php classes and xml-rpc-unaware php functions so that they can be used transparently.
10
 */
11
12
use PhpXmlRpc\Response;
13
use PhpXmlRpc\Value;
14
15
// *** functions ***
16
17
/**
18
 * Inner code of the state-number server.
19
 * Used to test wrapping of PHP functions into xml-rpc methods.
20
 *
21
 * @param integer $stateNo the state number
22
 *
23
 * @return string the name of the state (or error description)
24
 *
25
 * @throws Exception if state is not found
26
 */
27
function plain_findstate($stateNo)
28 169
{
29
     if (isset(exampleMethods::$stateNames[$stateNo - 1])) {
30 169
        return exampleMethods::$stateNames[$stateNo - 1];
31 169
    } else {
32
        // not, there so complain
33
        throw new Exception("I don't have a state for the index '" . $stateNo . "'", PhpXmlRpc\PhpXmlRpc::$xmlrpcerruser);
34 43
    }
35
}
36
37
$wrapper = new PhpXmlRpc\Wrapper();
38 559
39
$findstate2_sig = $wrapper->wrapPhpFunction('plain_findstate');
0 ignored issues
show
Bug introduced by
'plain_findstate' of type string is incompatible with the type Callable expected by parameter $callable of PhpXmlRpc\Wrapper::wrapPhpFunction(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

39
$findstate2_sig = $wrapper->wrapPhpFunction(/** @scrutinizer ignore-type */ 'plain_findstate');
Loading history...
40 559
41
42
// *** objects/classes ***
43
44
/**
45
 * Used to test usage of object methods in dispatch maps and in wrapper code.
46
 */
47
class handlersContainer
48
{
49
    /**
50
     * Method used to test logging of php warnings generated by user functions.
51
     * @param PhpXmlRpc\Request $req
52
     * @return Response
53
     */
54
    public function phpWarningGenerator($req)
0 ignored issues
show
Unused Code introduced by
The parameter $req is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

54
    public function phpWarningGenerator(/** @scrutinizer ignore-unused */ $req)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
55 22
    {
56
        /** @noinspection PhpUndefinedVariableInspection */
57 22
        $a = $undefinedVariable; // this triggers a warning in E_ALL mode, since $undefinedVariable is undefined
0 ignored issues
show
Unused Code introduced by
The assignment to $a is dead and can be removed.
Loading history...
Comprehensibility Best Practice introduced by
The variable $undefinedVariable seems to be never defined.
Loading history...
58 22
        return new Response(new Value(1, Value::$xmlrpcBoolean));
59
    }
60
61
    /**
62
     * Method used to test catching of exceptions in the server.
63
     * @param PhpXmlRpc\Request $req
64
     * @throws Exception
65
     */
66 2
    public function exceptionGenerator($req)
0 ignored issues
show
Unused Code introduced by
The parameter $req is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

66
    public function exceptionGenerator(/** @scrutinizer ignore-unused */ $req)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
67
    {
68 2
        throw new Exception("it's just a test", 1);
69
    }
70
71
    /**
72
     * @param string $msg
73
     */
74 2
    public function debugMessageGenerator($msg)
75
    {
76 2
        PhpXmlRpc\Server::xmlrpc_debugmsg($msg);
77 2
    }
78
79
    /**
80
     * A PHP version of the state-number server. Send me an integer and i'll sell you a state.
81
     * Used to test wrapping of PHP methods into xml-rpc methods.
82
     *
83
     * @param integer $num
84
     * @return string
85
     * @throws Exception
86
     */
87 85
    public static function findState($num)
88
    {
89
        // we are lazy ;-)
90 85
        return plain_findstate($num);
91
    }
92
93
    /**
94
     * Returns an instance of stdClass.
95
     * Used to test wrapping of PHP objects with class preservation
96
     */
97 1
    public function returnObject()
98
    {
99 1
        $obj = new stdClass();
100 1
        $obj->hello = 'world';
101 1
        return $obj;
102
    }
103
}
104
105 559
$findstate3_sig = $wrapper->wrapPhpFunction(array('handlersContainer', 'findState'));
0 ignored issues
show
Bug introduced by
array('handlersContainer', 'findState') of type array<integer,string> is incompatible with the type Callable expected by parameter $callable of PhpXmlRpc\Wrapper::wrapPhpFunction(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

105
$findstate3_sig = $wrapper->wrapPhpFunction(/** @scrutinizer ignore-type */ array('handlersContainer', 'findState'));
Loading history...
106
107 559
$instance = new handlersContainer();
108 559
$findstate4_sig = $wrapper->wrapPhpFunction(array($instance, 'findstate'));
0 ignored issues
show
Bug introduced by
array($instance, 'findstate') of type array<integer,handlersContainer|string> is incompatible with the type Callable expected by parameter $callable of PhpXmlRpc\Wrapper::wrapPhpFunction(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

108
$findstate4_sig = $wrapper->wrapPhpFunction(/** @scrutinizer ignore-type */ array($instance, 'findstate'));
Loading history...
109
110 559
$findstate5_sig = $wrapper->wrapPhpFunction('handlersContainer::findState', '', array('return_source' => true));
111 559
eval($findstate5_sig['source']);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
112
113 559
$findstate6_sig = $wrapper->wrapPhpFunction('plain_findstate', '', array('return_source' => true));
114 559
eval($findstate6_sig['source']);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
115
116 559
$findstate7_sig = $wrapper->wrapPhpFunction(array('handlersContainer', 'findState'), '', array('return_source' => true));
117 559
eval($findstate7_sig['source']);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
118
119
$findstate8_sig = $wrapper->wrapPhpFunction(array($instance, 'findstate'), '', array('return_source' => true));
120 559
eval($findstate8_sig['source']);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
121 559
122
$findstate9_sig = $wrapper->wrapPhpFunction('handlersContainer::findState', '', array('return_source' => true));
123 559
eval($findstate9_sig['source']);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
124 559
125
$findstate10_sig = array(
126
    /// @todo add a demo and test with closure usage
127
    "function" => function ($req) { return exampleMethods::findState($req); },
128
    "signature" => array(array(Value::$xmlrpcString, Value::$xmlrpcInt)),
129 559
    "docstring" => 'When passed an integer between 1 and 51 returns the name of a US state, where the integer is the ' .
130
        'index of that state name in an alphabetic order.',
131
);
132
133
$findstate11_sig = $wrapper->wrapPhpFunction(function ($stateNo) { return plain_findstate($stateNo); });
0 ignored issues
show
Bug introduced by
function(...) { /* ... */ } of type callable is incompatible with the type Callable expected by parameter $callable of PhpXmlRpc\Wrapper::wrapPhpFunction(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

133
$findstate11_sig = $wrapper->wrapPhpFunction(/** @scrutinizer ignore-type */ function ($stateNo) { return plain_findstate($stateNo); });
Loading history...
134
135
/// @todo do we really need a new instance ?
136
$c = new handlersContainer();
137 559
138
$moreSignatures = $wrapper->wrapPhpClass($c, array('prefix' => 'tests.', 'method_type' => 'all'));
139 559
140
$namespaceSignatures = $wrapper->wrapPhpClass($c, array('prefix' => 'namespacetest.', 'replace_class_name' => true, 'method_filter' => '/^findState$/', 'method_type' => 'static'));
141 559
142
$returnObj_sig =  $wrapper->wrapPhpFunction(array($c, 'returnObject'), '', array('encode_php_objs' => true));
143 559
144
return array_merge(
145 559
    array(
146
        'tests.getStateName.2' => $findstate2_sig,
147 559
148 559
        'tests.getStateName.3' => $findstate3_sig,
149 559
        'tests.getStateName.4' => $findstate4_sig,
150 559
        'tests.getStateName.5' => $findstate5_sig,
151 559
        'tests.getStateName.6' => $findstate6_sig,
152 559
        'tests.getStateName.7' => $findstate7_sig,
153 559
        'tests.getStateName.8' => $findstate8_sig,
154 559
        'tests.getStateName.9' => $findstate9_sig,
155 559
        'tests.getStateName.10' => $findstate10_sig,
156 559
        'tests.getStateName.11' => $findstate11_sig,
157 559
    ),
158
    $moreSignatures,
159 559
    $namespaceSignatures,
160 559
    array(
161
        'tests.returnPhpObject' => $returnObj_sig,
162
        // signature omitted on purpose
163
        "tests.generatePHPWarning" => array(
164
            "function" => array($instance, "phpWarningGenerator"),
165
        ),
166
        // signature omitted on purpose
167
        "tests.raiseException" => array(
168
            "function" => array($instance, "exceptionGenerator"),
169
        ),
170
    )
171
);
172