These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | namespace morphos\Russian; |
||
3 | |||
4 | use morphos\S; |
||
5 | |||
6 | /** |
||
7 | * Rules are from http://surnameonline.ru/patronymic.html |
||
8 | */ |
||
9 | class MiddleNamesInflection extends \morphos\NamesInflection implements Cases |
||
10 | { |
||
11 | use RussianLanguage, CasesHelper; |
||
12 | |||
13 | /** |
||
14 | * @param $name |
||
15 | * @return null|string |
||
16 | */ |
||
17 | 5 | public static function detectGender($name) |
|
18 | { |
||
19 | 5 | $name = S::lower($name); |
|
20 | 5 | if (S::slice($name, -2) == 'ич') { |
|
0 ignored issues
–
show
|
|||
21 | 3 | return self::MALE; |
|
22 | 3 | } elseif (S::slice($name, -2) == 'на') { |
|
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 19 can also be of type boolean ; however, morphos\S::slice() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
23 | 3 | return self::FEMALE; |
|
24 | } |
||
25 | |||
26 | return null; |
||
27 | } |
||
28 | |||
29 | /** |
||
30 | * @param $name |
||
31 | * @param null $gender |
||
32 | * @return bool |
||
33 | */ |
||
34 | 2 | public static function isMutable($name, $gender = null) |
|
35 | { |
||
36 | 2 | $name = S::lower($name); |
|
37 | 2 | View Code Duplication | if (in_array(S::slice($name, -2), ['ич', 'на'], true)) { |
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 36 can also be of type boolean ; however, morphos\S::slice() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
38 | 2 | return true; |
|
39 | } |
||
40 | |||
41 | // it's foreign middle name, inflect it as a first name |
||
42 | return FirstNamesInflection::isMutable($name, $gender); |
||
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 36 can also be of type boolean ; however, morphos\Russian\FirstNamesInflection::isMutable() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
43 | } |
||
44 | |||
45 | /** |
||
46 | * @param $name |
||
47 | * @param $case |
||
48 | * @param null $gender |
||
49 | * @return mixed |
||
50 | * @throws \Exception |
||
51 | */ |
||
52 | 9 | public static function getCase($name, $case, $gender = null) |
|
53 | { |
||
54 | 9 | $case = self::canonizeCase($case); |
|
55 | 9 | $forms = self::getCases($name, $gender); |
|
56 | 9 | return $forms[$case]; |
|
57 | } |
||
58 | |||
59 | /** |
||
60 | * @param $name |
||
61 | * @param null $gender |
||
62 | * @return array |
||
63 | */ |
||
64 | 21 | public static function getCases($name, $gender = null) |
|
65 | { |
||
66 | 21 | $name = S::lower($name); |
|
67 | 21 | if (S::slice($name, -2) == 'ич') { |
|
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 66 can also be of type boolean ; however, morphos\S::slice() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
68 | // man rules |
||
69 | 8 | $name = S::name($name); |
|
70 | return array( |
||
71 | 8 | Cases::IMENIT => $name, |
|
72 | 8 | Cases::RODIT => $name.'а', |
|
73 | 8 | Cases::DAT => $name.'у', |
|
74 | 8 | Cases::VINIT => $name.'а', |
|
75 | 8 | Cases::TVORIT => $name.'ем', |
|
76 | 8 | Cases::PREDLOJ => $name.'е', |
|
77 | ); |
||
78 | 13 | View Code Duplication | } elseif (S::slice($name, -2) == 'на') { |
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 66 can also be of type boolean ; however, morphos\S::slice() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
79 | 11 | $prefix = S::name(S::slice($name, 0, -1)); |
|
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 66 can also be of type boolean ; however, morphos\S::slice() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
80 | return array( |
||
81 | 11 | Cases::IMENIT => $prefix.'а', |
|
82 | 11 | Cases::RODIT => $prefix.'ы', |
|
83 | 11 | Cases::DAT => $prefix.'е', |
|
84 | 11 | Cases::VINIT => $prefix.'у', |
|
85 | 11 | Cases::TVORIT => $prefix.'ой', |
|
86 | 11 | Cases::PREDLOJ => $prefix.'е', |
|
87 | ); |
||
88 | } |
||
89 | |||
90 | // inflect other middle names (foreign) as first names |
||
91 | 2 | return FirstNamesInflection::getCases($name, $gender); |
|
0 ignored issues
–
show
It seems like
$name defined by \morphos\S::lower($name) on line 66 can also be of type boolean ; however, morphos\Russian\FirstNamesInflection::getCases() does only seem to accept string , maybe add an additional type check?
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check: /**
* @return array|string
*/
function returnsDifferentValues($x) {
if ($x) {
return 'foo';
}
return array();
}
$x = returnsDifferentValues($y);
if (is_array($x)) {
// $x is an array.
}
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.
Loading history...
|
|||
92 | } |
||
93 | } |
||
94 |
If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:
If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.