Skip to content

Commit

Permalink
Upgrade coding standard library
Browse files Browse the repository at this point in the history
  • Loading branch information
greg0ire committed Nov 10, 2020
1 parent 0ea79fd commit f081eae
Show file tree
Hide file tree
Showing 10 changed files with 56 additions and 40 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"require-dev": {
"ext-phar": "*",
"ext-pdo": "*",
"doctrine/coding-standard": "^6.0",
"doctrine/coding-standard": "^8.0",
"phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
Expand Down
15 changes: 15 additions & 0 deletions phpcs.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,21 @@
<exclude name="SlevomatCodingStandard.Exceptions.ReferenceThrowableOnly.ReferencedGeneralException"/>
</rule>

<!-- Disable the rules that will require PHP 7.4 -->
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint">
<properties>
<property name="enableNativeTypeHint" value="false"/>
</properties>
</rule>

<rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint">
<exclude-pattern>*/src/*</exclude-pattern>
</rule>

<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint">
<exclude-pattern>*/src/*</exclude-pattern>
</rule>

<rule ref="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming">
<exclude-pattern>tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php</exclude-pattern>
</rule>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use InvalidArgumentException as BaseInvalidArgumentException;
use ReflectionClass;

use function interface_exists;
use function sprintf;
use function trait_exists;
Expand All @@ -13,7 +14,7 @@
*/
class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
{
public static function fromNonExistingClass(string $className) : self
public static function fromNonExistingClass(string $className): self
{
if (interface_exists($className)) {
return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className));
Expand All @@ -30,7 +31,7 @@ public static function fromNonExistingClass(string $className) : self
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
public static function fromAbstractClass(ReflectionClass $reflectionClass) : self
public static function fromAbstractClass(ReflectionClass $reflectionClass): self
{
return new self(sprintf(
'The provided class "%s" is abstract, and can not be instantiated',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Exception;
use ReflectionClass;
use UnexpectedValueException as BaseUnexpectedValueException;

use function sprintf;

/**
Expand All @@ -19,7 +20,7 @@ class UnexpectedValueException extends BaseUnexpectedValueException implements E
public static function fromSerializationTriggeredException(
ReflectionClass $reflectionClass,
Exception $exception
) : self {
): self {
return new self(
sprintf(
'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
Expand All @@ -40,7 +41,7 @@ public static function fromUncleanUnSerialization(
int $errorCode,
string $errorFile,
int $errorLine
) : self {
): self {
return new self(
sprintf(
'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
Expand Down
20 changes: 9 additions & 11 deletions src/Doctrine/Instantiator/Instantiator.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use ReflectionClass;
use ReflectionException;
use Serializable;

use function class_exists;
use function is_subclass_of;
use function restore_error_handler;
Expand All @@ -17,9 +18,6 @@
use function strlen;
use function unserialize;

/**
* {@inheritDoc}
*/
final class Instantiator implements InstantiatorInterface
{
/**
Expand Down Expand Up @@ -97,7 +95,7 @@ private function buildAndCacheFromFactory(string $className)
*
* @phpstan-return callable(): T
*/
private function buildFactory(string $className) : callable
private function buildFactory(string $className): callable
{
$reflectionClass = $this->getReflectionClass($className);

Expand Down Expand Up @@ -128,7 +126,7 @@ private function buildFactory(string $className) : callable
*
* @phpstan-return ReflectionClass<T>
*/
private function getReflectionClass(string $className) : ReflectionClass
private function getReflectionClass(string $className): ReflectionClass
{
if (! class_exists($className)) {
throw InvalidArgumentException::fromNonExistingClass($className);
Expand All @@ -149,9 +147,9 @@ private function getReflectionClass(string $className) : ReflectionClass
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString) : void
private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString): void
{
set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error) : bool {
set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error): bool {
$error = UnexpectedValueException::fromUncleanUnSerialization(
$reflectionClass,
$message,
Expand Down Expand Up @@ -180,7 +178,7 @@ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionCl
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString) : void
private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString): void
{
try {
unserialize($serializedString);
Expand All @@ -193,7 +191,7 @@ private function attemptInstantiationViaUnSerialization(ReflectionClass $reflect
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
private function isInstantiableViaReflection(ReflectionClass $reflectionClass) : bool
private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool
{
return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
}
Expand All @@ -204,7 +202,7 @@ private function isInstantiableViaReflection(ReflectionClass $reflectionClass) :
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
private function hasInternalAncestors(ReflectionClass $reflectionClass) : bool
private function hasInternalAncestors(ReflectionClass $reflectionClass): bool
{
do {
if ($reflectionClass->isInternal()) {
Expand All @@ -225,7 +223,7 @@ private function hasInternalAncestors(ReflectionClass $reflectionClass) : bool
* @template T of object
* @phpstan-param ReflectionClass<T> $reflectionClass
*/
private function isSafeToClone(ReflectionClass $reflectionClass) : bool
private function isSafeToClone(ReflectionClass $reflectionClass): bool
{
return $reflectionClass->isCloneable()
&& ! $reflectionClass->hasMethod('__clone')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class InstantiatorPerformanceEvent
/** @var Instantiator */
private $instantiator;

public function init() : void
public function init(): void
{
$this->instantiator = new Instantiator();

Expand All @@ -34,39 +34,39 @@ public function init() : void
/**
* @Revs(20000)
*/
public function benchInstantiateSelf() : void
public function benchInstantiateSelf(): void
{
$this->instantiator->instantiate(self::class);
}

/**
* @Revs(20000)
*/
public function benchInstantiateInternalClass() : void
public function benchInstantiateInternalClass(): void
{
$this->instantiator->instantiate(ArrayObject::class);
}

/**
* @Revs(20000)
*/
public function benchInstantiateSimpleSerializableAssetClass() : void
public function benchInstantiateSimpleSerializableAssetClass(): void
{
$this->instantiator->instantiate(SimpleSerializableAsset::class);
}

/**
* @Revs(20000)
*/
public function benchInstantiateSerializableArrayObjectAsset() : void
public function benchInstantiateSerializableArrayObjectAsset(): void
{
$this->instantiator->instantiate(SerializableArrayObjectAsset::class);
}

/**
* @Revs(20000)
*/
public function benchInstantiateUnCloneableAsset() : void
public function benchInstantiateUnCloneableAsset(): void
{
$this->instantiator->instantiate(UnCloneableAsset::class);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use DoctrineTest\InstantiatorTestAsset\SimpleTraitAsset;
use PHPUnit\Framework\TestCase;
use ReflectionClass;

use function sprintf;
use function str_replace;
use function uniqid;
Expand All @@ -19,7 +20,7 @@
*/
class InvalidArgumentExceptionTest extends TestCase
{
public function testFromNonExistingTypeWithNonExistingClass() : void
public function testFromNonExistingTypeWithNonExistingClass(): void
{
$className = self::class . str_replace('.', '', uniqid('', true));
$exception = InvalidArgumentException::fromNonExistingClass($className);
Expand All @@ -28,7 +29,7 @@ public function testFromNonExistingTypeWithNonExistingClass() : void
self::assertSame('The provided class "' . $className . '" does not exist', $exception->getMessage());
}

public function testFromNonExistingTypeWithTrait() : void
public function testFromNonExistingTypeWithTrait(): void
{
$exception = InvalidArgumentException::fromNonExistingClass(SimpleTraitAsset::class);

Expand All @@ -38,7 +39,7 @@ public function testFromNonExistingTypeWithTrait() : void
);
}

public function testFromNonExistingTypeWithInterface() : void
public function testFromNonExistingTypeWithInterface(): void
{
$exception = InvalidArgumentException::fromNonExistingClass(InstantiatorInterface::class);

Expand All @@ -51,7 +52,7 @@ public function testFromNonExistingTypeWithInterface() : void
);
}

public function testFromAbstractClass() : void
public function testFromAbstractClass(): void
{
$reflection = new ReflectionClass(AbstractClassAsset::class);
$exception = InvalidArgumentException::fromAbstractClass($reflection);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use Exception;
use PHPUnit\Framework\TestCase;
use ReflectionClass;

use function sprintf;

/**
Expand All @@ -16,7 +17,7 @@
*/
class UnexpectedValueExceptionTest extends TestCase
{
public function testFromSerializationTriggeredException() : void
public function testFromSerializationTriggeredException(): void
{
$reflectionClass = new ReflectionClass($this);
$previous = new Exception();
Expand All @@ -31,7 +32,7 @@ public function testFromSerializationTriggeredException() : void
);
}

public function testFromUncleanUnSerialization() : void
public function testFromUncleanUnSerialization(): void
{
$reflection = new ReflectionClass(AbstractClassAsset::class);
$exception = UnexpectedValueException::fromUncleanUnSerialization($reflection, 'foo', 123, 'bar', 456);
Expand Down
20 changes: 9 additions & 11 deletions tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use PharException;
use PHPUnit\Framework\TestCase;
use stdClass;

use function str_replace;
use function uniqid;

Expand All @@ -38,10 +39,7 @@ class InstantiatorTest extends TestCase
/** @var Instantiator */
private $instantiator;

/**
* {@inheritDoc}
*/
protected function setUp() : void
protected function setUp(): void
{
parent::setUp();

Expand All @@ -52,7 +50,7 @@ protected function setUp() : void
* @dataProvider getInstantiableClasses
* @phpstan-param class-string $className
*/
public function testCanInstantiate(string $className) : void
public function testCanInstantiate(string $className): void
{
self::assertInstanceOf($className, $this->instantiator->instantiate($className));
}
Expand All @@ -61,7 +59,7 @@ public function testCanInstantiate(string $className) : void
* @dataProvider getInstantiableClasses
* @phpstan-param class-string $className
*/
public function testInstantiatesSeparateInstances(string $className) : void
public function testInstantiatesSeparateInstances(string $className): void
{
$instance1 = $this->instantiator->instantiate($className);
$instance2 = $this->instantiator->instantiate($className);
Expand All @@ -70,7 +68,7 @@ public function testInstantiatesSeparateInstances(string $className) : void
self::assertNotSame($instance1, $instance2);
}

public function testExceptionOnUnSerializationException() : void
public function testExceptionOnUnSerializationException(): void
{
$this->expectException(UnexpectedValueException::class);

Expand All @@ -81,14 +79,14 @@ public function testExceptionOnUnSerializationException() : void
* @dataProvider getInvalidClassNames
* @phpstan-param class-string $invalidClassName
*/
public function testInstantiationFromNonExistingClass(string $invalidClassName) : void
public function testInstantiationFromNonExistingClass(string $invalidClassName): void
{
$this->expectException(InvalidArgumentException::class);

$this->instantiator->instantiate($invalidClassName);
}

public function testInstancesAreNotCloned() : void
public function testInstancesAreNotCloned(): void
{
$className = 'TemporaryClass' . str_replace('.', '', uniqid('', true));

Expand All @@ -115,7 +113,7 @@ public function testInstancesAreNotCloned() : void
*
* @phpstan-return list<array{class-string}>
*/
public function getInstantiableClasses() : array
public function getInstantiableClasses(): array
{
return [
[stdClass::class],
Expand Down Expand Up @@ -144,7 +142,7 @@ public function getInstantiableClasses() : array
*
* @return string[][]
*/
public function getInvalidClassNames() : array
public function getInvalidClassNames(): array
{
return [
[self::class . str_replace('.', '', uniqid('', true))],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace DoctrineTest\InstantiatorTestAsset;

use ArrayObject;

use function trigger_error;

/**
Expand All @@ -16,7 +17,7 @@ class WakeUpNoticesAsset extends ArrayObject
/**
* Wakeup method called after un-serialization
*/
public function __wakeup()
public function __wakeup(): void
{
trigger_error('Something went bananas while un-serializing this instance');
}
Expand Down

0 comments on commit f081eae

Please sign in to comment.