Skip to content
This repository was archived by the owner on Sep 17, 2025. It is now read-only.

Commit 1e23a7d

Browse files
committed
clean up deprecation notices for PHP 8
1 parent dd9df4d commit 1e23a7d

File tree

8 files changed

+94
-78
lines changed

8 files changed

+94
-78
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,4 @@ nbproject
5656
examples/credentials.php
5757
doc/
5858
tests/logs
59-
59+
.phpunit.result.cache

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
}
3030
},
3131
"scripts": {
32-
"generate-src": "@php ./util/generate-classes-from-wsdls.php generate"
32+
"generate-src": "@php ./util/generate-classes-from-wsdls.php generate",
33+
"run-tests": "XDEBUG_MODE=coverage phpunit"
3334
}
3435
}

phpunit.xml

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,26 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit backupGlobals="false"
3-
backupStaticAttributes="false"
4-
bootstrap="tests/bootstrap.php"
5-
colors="true"
6-
convertErrorsToExceptions="true"
7-
convertNoticesToExceptions="true"
8-
convertWarningsToExceptions="true"
9-
processIsolation="false"
10-
stopOnFailure="false">
11-
<testsuites>
12-
<testsuite name="FedEx API Wrapper Test Suite">
13-
<directory>./tests/FedEx/</directory>
14-
</testsuite>
15-
</testsuites>
16-
<filter>
17-
<whitelist processUncoveredFilesFromWhitelist="true">
18-
<directory suffix=".php">./src</directory>
19-
</whitelist>
20-
</filter>
21-
<logging>
22-
<log type="coverage-html" target="tests/logs/report" lowUpperBound="35" highLowerBound="70"/>
23-
<!--<log type="coverage-clover" target="tests/logs/coverage.xml"/>-->
24-
<!--<log type="coverage-php" target="tests/logs/coverage.serialized"/>-->
25-
<!--<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>-->
26-
<!--<log type="junit" target="tests/logs/logfile.xml" logIncompleteSkipped="false"/>-->
27-
<!--<log type="testdox-html" target="tests/logs/testdox.html"/>-->
28-
<!--<log type="testdox-text" target="tests/logs/testdox.txt"/>-->
29-
</logging>
30-
<php>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" backupGlobals="false" backupStaticAttributes="false" bootstrap="tests/bootstrap.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd">
3+
<coverage processUncoveredFiles="true">
4+
<include>
5+
<directory suffix=".php">./src</directory>
6+
</include>
7+
<report>
8+
<html outputDirectory="tests/logs/report" lowUpperBound="35" highLowerBound="70"/>
9+
</report>
10+
</coverage>
11+
<testsuites>
12+
<testsuite name="FedEx API Wrapper Test Suite">
13+
<directory>./tests/FedEx/</directory>
14+
</testsuite>
15+
</testsuites>
16+
<logging>
17+
<!--<log type="coverage-clover" target="tests/logs/coverage.xml"/>-->
18+
<!--<log type="coverage-php" target="tests/logs/coverage.serialized"/>-->
19+
<!--<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>-->
20+
<!--<log type="junit" target="tests/logs/logfile.xml" logIncompleteSkipped="false"/>-->
21+
<!--<log type="testdox-html" target="tests/logs/testdox.html"/>-->
22+
<!--<log type="testdox-text" target="tests/logs/testdox.txt"/>-->
23+
</logging>
24+
<php>
3125
</php>
3226
</phpunit>

src/FedEx/AbstractComplexType.php

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?php
22
namespace FedEx;
33

4+
use ReflectionClass;
5+
use ReflectionMethod;
6+
use ReflectionNamedType;
7+
48
/**
59
* Abstract class for SimpleTypes
610
*
@@ -67,11 +71,14 @@ public function &__get($name)
6771
}
6872

6973
$setterMethodName = "set{$name}";
70-
$reflectionClass = new \ReflectionClass($this);
74+
$reflectionClass = new ReflectionClass($this);
7175
if ($reflectionClass->hasMethod($setterMethodName)) {
72-
$parameterClass = $reflectionClass->getMethod($setterMethodName)->getParameters()[0]->getClass();
73-
if (!empty($parameterClass)) {
74-
$this->$setterMethodName(new $parameterClass->name());
76+
$reflectionNamedType = $reflectionClass->getMethod($setterMethodName)->getParameters()[0]->getType();
77+
/* @var $reflectionNamedType ReflectionNamedType */
78+
$parameterClassName = $reflectionNamedType->getName();
79+
80+
if (class_exists($parameterClassName)) {
81+
$this->$setterMethodName(new $parameterClassName);
7582
return $this->values[$name];
7683
}
7784
}
@@ -138,48 +145,50 @@ public function toArray($renderTopKey = false)
138145
*/
139146
public function populateFromStdClass(\stdClass $stdClass)
140147
{
141-
$reflectionClass = new \ReflectionClass($this);
148+
$reflectionClass = new ReflectionClass($this);
142149

143-
$setterMethods = array_filter($reflectionClass->getMethods(\ReflectionMethod::IS_PUBLIC), function ($reflectionMethod) {
150+
$setterMethods = array_filter($reflectionClass->getMethods(ReflectionMethod::IS_PUBLIC), function ($reflectionMethod) {
144151
return (preg_match('/^set.*$/', $reflectionMethod->name));
145152
});
146153

147154
foreach ($setterMethods as $reflectionMethod) {
148-
/* @var $reflectionMethod \ReflectionMethod */
155+
/* @var $reflectionMethod ReflectionMethod */
149156
$methodName = $reflectionMethod->name;
150157
$stdPropertyName = str_replace('set', '', $methodName);
151158
$parameterValue = null;
152159
$reflectionParameter = $reflectionMethod->getParameters()[0];
153-
154-
if ($reflectionParameter->getClass() instanceof \ReflectionClass) {
155-
//class
156-
$classPropertyName = $reflectionParameter->getClass()->name;
157-
$parameterValue = new $classPropertyName;
158-
if (isset($stdClass->$stdPropertyName)) {
159-
$parameterValue->populateFromStdClass($stdClass->$stdPropertyName);
160-
}
161-
} elseif ($reflectionParameter->isArray()) {
162-
//array
163-
$arrayType = Reflection::getAbstractClassSetterMethodArrayType($reflectionParameter);
164-
if (Reflection::isClassNameSimpleType($arrayType)) {
165-
} else {
166-
if (isset($stdClass->$stdPropertyName)) {
167-
$parameterValue = [];
168-
if (is_array($stdClass->$stdPropertyName)) {
169-
foreach ($stdClass->$stdPropertyName as $property) {
160+
$reflectionParameterType = $reflectionParameter->getType();
161+
162+
if ($reflectionParameterType instanceof ReflectionNamedType) {
163+
if ($reflectionParameterType->getName() === 'array') {
164+
// array
165+
$arrayType = Reflection::getAbstractClassSetterMethodArrayType($reflectionParameter);
166+
if (!Reflection::isClassNameSimpleType($arrayType)) {
167+
if (isset($stdClass->$stdPropertyName)) {
168+
$parameterValue = [];
169+
if (is_array($stdClass->$stdPropertyName)) {
170+
foreach ($stdClass->$stdPropertyName as $property) {
171+
$class = new $arrayType;
172+
$parameterValue[] = $class;
173+
$class->populateFromStdClass($property);
174+
}
175+
} else {
170176
$class = new $arrayType;
171177
$parameterValue[] = $class;
172-
$class->populateFromStdClass($property);
178+
$class->populateFromStdClass($stdClass->$stdPropertyName);
173179
}
174-
} else {
175-
$class = new $arrayType;
176-
$parameterValue[] = $class;
177-
$class->populateFromStdClass($stdClass->$stdPropertyName);
178180
}
179181
}
182+
} elseif (!$reflectionParameterType->isBuiltin()) {
183+
//class
184+
$classPropertyName = $reflectionParameterType->getName();
185+
$parameterValue = new $classPropertyName();
186+
if (isset($stdClass->$stdPropertyName)) {
187+
$parameterValue->populateFromStdClass($stdClass->$stdPropertyName);
188+
}
180189
}
181190
} else {
182-
//is scalar type
191+
// is scalar type
183192
if (isset($stdClass->$stdPropertyName)) {
184193
$parameterValue = $stdClass->$stdPropertyName;
185194
}

src/FedEx/Reflection.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ class Reflection
1212
*/
1313
public static function getAbstractClassSetterMethodArrayType(\ReflectionParameter $reflectionParameter)
1414
{
15-
if (!$reflectionParameter->isArray()) {
15+
$reflectionParamaterType = $reflectionParameter->getType();
16+
if ($reflectionParamaterType instanceof \ReflectionNamedType && $reflectionParamaterType->getName() !== 'array') {
1617
return null;
1718
}
1819
preg_match('/@param\s+([^\s]+)/', $reflectionParameter->getDeclaringFunction()->getDocComment(), $matches);
@@ -35,9 +36,14 @@ public static function getAbstractClassSetterMethodArrayType(\ReflectionParamete
3536
*/
3637
public static function getAbstractClassSetterMethodScalarType(\ReflectionParameter $reflectionParameter)
3738
{
38-
if ($reflectionParameter->isArray() || ($reflectionParameter->getClass() instanceof \ReflectionClass)) {
39+
$reflectionParameterType = $reflectionParameter->getType();
40+
41+
if ($reflectionParameterType instanceof \ReflectionNamedType) {
3942
return null;
4043
}
44+
// if ($reflectionParameter->isArray() || ($reflectionParameter->getClass() instanceof \ReflectionClass)) {
45+
// return null;
46+
// }
4147

4248
preg_match('/@param\s+([^\s]+)/', $reflectionParameter->getDeclaringFunction()->getDocComment(), $matches);
4349
if (!isset($matches[1])) {

tests/FedEx/Tests/RateServiceTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function testNoValidServicesAvailableWarning()
5050

5151
$mockSoapClient = $this->getMockFromWsdl(Request::getWsdlPath());
5252
$mockSoapClient->method('getRates')->will($this->returnValue($expectedResponse));
53-
53+
5454
$request = new Request($mockSoapClient);
5555

5656
//get rates reply

tests/FedEx/Tests/TestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class TestCase extends \PHPUnit\Framework\TestCase
1717
*/
1818
protected $mockResponseSerializer;
1919

20-
public function setUp()
20+
public function setUp(): void
2121
{
2222
$this->mockResponseSerializer = new MockResponseSerializer();
2323
}

util/ComplexTypePopulator.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use FedEx\AbstractComplexType;
66
use Faker\Factory;
77
use FedEx\Reflection;
8+
use ReflectionNamedType;
89

910
class ComplexTypePopulator
1011
{
@@ -60,21 +61,26 @@ public function populate(AbstractComplexType $object)
6061
protected function getFakeValue(\ReflectionMethod $reflectionMethod)
6162
{
6263
foreach ($reflectionMethod->getParameters() as $reflectionParameter) {
63-
if ($reflectionParameter->getClass() instanceof \ReflectionClass) {
64-
$className = $reflectionParameter->getClass()->name;
65-
return new $className;
66-
} elseif ($reflectionParameter->isArray()) {
67-
$arrayType = Reflection::getAbstractClassSetterMethodArrayType($reflectionParameter);
68-
if (class_exists($arrayType)) {
69-
if (Reflection::isClassNameSimpleType($arrayType)) {
70-
return [$this->getRandomConstValueFromSimpleType($arrayType)];
71-
} else {
72-
$complexType = new $arrayType();
73-
$this->populate($complexType);
74-
return [$complexType];
64+
$reflectionParameterType = $reflectionParameter->getType();
65+
66+
if ($reflectionParameterType instanceof ReflectionNamedType) {
67+
if ($reflectionParameterType->getName() === 'array') {
68+
$arrayType = Reflection::getAbstractClassSetterMethodArrayType($reflectionParameter);
69+
if (class_exists($arrayType)) {
70+
if (Reflection::isClassNameSimpleType($arrayType)) {
71+
return [$this->getRandomConstValueFromSimpleType($arrayType)];
72+
} else {
73+
$complexType = new $arrayType();
74+
$this->populate($complexType);
75+
return [$complexType];
76+
}
7577
}
78+
return ['test'];
79+
} elseif (!$reflectionParameterType->isBuiltin()) {
80+
$className = $reflectionParameterType->getName();
81+
return new $className;
7682
}
77-
return ['test'];
83+
7884
} else {
7985
$scalarType = Reflection::getAbstractClassSetterMethodScalarType($reflectionParameter);
8086

0 commit comments

Comments
 (0)