Skip to content

Commit

Permalink
Bump PHP to 7.2
Browse files Browse the repository at this point in the history
This allows us to simplify some dependencies constraints, and to add
parameter type declarations.
  • Loading branch information
greg0ire committed Dec 18, 2022
1 parent e29955f commit 1fdda26
Show file tree
Hide file tree
Showing 13 changed files with 70 additions and 103 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/continuous-integration.yml
Expand Up @@ -16,4 +16,4 @@ jobs:
name: "PHPUnit"
uses: "doctrine/.github/.github/workflows/continuous-integration.yml@2.1.0"
with:
php-versions: '["7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"]'
php-versions: '["7.2", "7.3", "7.4", "8.0", "8.1", "8.2"]'
6 changes: 5 additions & 1 deletion UPGRADE.md
@@ -1,6 +1,10 @@
# Upgrade from 1.0.x to 2.0.x

`DocLexer::peek()` and `DocLexer::glimpse` now return
- `DocLexer::peek()` and `DocLexer::glimpse` now return
`Doctrine\Common\Lexer\Token` objects. When using `doctrine/lexer` 2, these
implement `ArrayAccess` as a way for you to still be able to treat them as
arrays in some ways.
- Parameter type declarations have been added to all methods of all classes. If
you have classes inheriting from classes inside this package, you should add
parameter and return type declarations.
- Support for PHP < 7.2 has been removed
10 changes: 5 additions & 5 deletions composer.json
Expand Up @@ -32,17 +32,17 @@
],
"homepage": "https://www.doctrine-project.org/projects/annotations.html",
"require": {
"php": "^7.1 || ^8.0",
"php": "^7.2 || ^8.0",
"ext-tokenizer": "*",
"doctrine/lexer": "^2",
"psr/cache": "^1 || ^2 || ^3"
},
"require-dev": {
"doctrine/cache": "^1.11 || ^2.0",
"doctrine/coding-standard": "^9 || ^10",
"phpstan/phpstan": "~1.4.10 || ^1.8.0",
"doctrine/cache": "^2.0",
"doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"symfony/cache": "^4.4 || ^5.4 || ^6",
"symfony/cache": "^5.4 || ^6",
"vimeo/psalm": "^4.10"
},
"suggest": {
Expand Down
9 changes: 3 additions & 6 deletions lib/Doctrine/Common/Annotations/Annotation.php
Expand Up @@ -29,11 +29,9 @@ final public function __construct(array $data)
/**
* Error handler for unknown property accessor in Annotation class.
*
* @param string $name Unknown property name.
*
* @throws BadMethodCallException
*/
public function __get($name)
public function __get(string $name)
{
throw new BadMethodCallException(
sprintf("Unknown property '%s' on annotation '%s'.", $name, static::class)
Expand All @@ -43,12 +41,11 @@ public function __get($name)
/**
* Error handler for unknown property mutator in Annotation class.
*
* @param string $name Unknown property name.
* @param mixed $value Property value.
* @param mixed $value Property value.
*
* @throws BadMethodCallException
*/
public function __set($name, $value)
public function __set(string $name, $value)
{
throw new BadMethodCallException(
sprintf("Unknown property '%s' on annotation '%s'.", $name, static::class)
Expand Down
65 changes: 28 additions & 37 deletions lib/Doctrine/Common/Annotations/AnnotationException.php
Expand Up @@ -19,23 +19,19 @@ class AnnotationException extends Exception
/**
* Creates a new AnnotationException describing a Syntax error.
*
* @param string $message Exception message
*
* @return AnnotationException
*/
public static function syntaxError($message)
public static function syntaxError(string $message)
{
return new self('[Syntax Error] ' . $message);
}

/**
* Creates a new AnnotationException describing a Semantical error.
*
* @param string $message Exception message
*
* @return AnnotationException
*/
public static function semanticalError($message)
public static function semanticalError(string $message)
{
return new self('[Semantical Error] ' . $message);
}
Expand All @@ -44,36 +40,29 @@ public static function semanticalError($message)
* Creates a new AnnotationException describing an error which occurred during
* the creation of the annotation.
*
* @param string $message
*
* @return AnnotationException
*/
public static function creationError($message, ?Throwable $previous = null)
public static function creationError(string $message, ?Throwable $previous = null)
{
return new self('[Creation Error] ' . $message, 0, $previous);
}

/**
* Creates a new AnnotationException describing a type error.
*
* @param string $message
*
* @return AnnotationException
*/
public static function typeError($message)
public static function typeError(string $message)
{
return new self('[Type Error] ' . $message);
}

/**
* Creates a new AnnotationException describing a constant semantical error.
*
* @param string $identifier
* @param string $context
*
* @return AnnotationException
*/
public static function semanticalErrorConstants($identifier, $context = null)
public static function semanticalErrorConstants(string $identifier, ?string $context = null)
{
return self::semanticalError(sprintf(
"Couldn't find constant %s%s.",
Expand All @@ -85,16 +74,17 @@ public static function semanticalErrorConstants($identifier, $context = null)
/**
* Creates a new AnnotationException describing an type error of an attribute.
*
* @param string $attributeName
* @param string $annotationName
* @param string $context
* @param string $expected
* @param mixed $actual
* @param mixed $actual
*
* @return AnnotationException
*/
public static function attributeTypeError($attributeName, $annotationName, $context, $expected, $actual)
{
public static function attributeTypeError(
string $attributeName,
string $annotationName,
string $context,
string $expected,
$actual
) {
return self::typeError(sprintf(
'Attribute "%s" of @%s declared on %s expects %s, but got %s.',
$attributeName,
Expand All @@ -108,15 +98,14 @@ public static function attributeTypeError($attributeName, $annotationName, $cont
/**
* Creates a new AnnotationException describing an required error of an attribute.
*
* @param string $attributeName
* @param string $annotationName
* @param string $context
* @param string $expected
*
* @return AnnotationException
*/
public static function requiredError($attributeName, $annotationName, $context, $expected)
{
public static function requiredError(
string $attributeName,
string $annotationName,
string $context,
string $expected
) {
return self::typeError(sprintf(
'Attribute "%s" of @%s declared on %s expects %s. This value should not be null.',
$attributeName,
Expand All @@ -129,16 +118,18 @@ public static function requiredError($attributeName, $annotationName, $context,
/**
* Creates a new AnnotationException describing a invalid enummerator.
*
* @param string $attributeName
* @param string $annotationName
* @param string $context
* @param mixed $given
* @phpstan-param list<string> $available
* @param mixed $given
* @phpstan-param list<string> $available
*
* @return AnnotationException
*/
public static function enumeratorError($attributeName, $annotationName, $context, $available, $given)
{
public static function enumeratorError(
string $attributeName,
string $annotationName,
string $context,
array $available,
$given
) {
return new self(sprintf(
'[Enum Error] Attribute "%s" of @%s declared on %s accepts only [%s], but got %s.',
$attributeName,
Expand Down
8 changes: 2 additions & 6 deletions lib/Doctrine/Common/Annotations/AnnotationReader.php
Expand Up @@ -48,20 +48,16 @@ class AnnotationReader implements Reader

/**
* Add a new annotation to the globally ignored annotation names with regard to exception handling.
*
* @param string $name
*/
public static function addGlobalIgnoredName($name)
public static function addGlobalIgnoredName(string $name)
{
self::$globalIgnoredNames[$name] = true;
}

/**
* Add a new annotation to the globally ignored annotation namespaces with regard to exception handling.
*
* @param string $namespace
*/
public static function addGlobalIgnoredNamespace($namespace)
public static function addGlobalIgnoredNamespace(string $namespace)
{
self::$globalIgnoredNamespaces[$namespace] = true;
}
Expand Down
11 changes: 4 additions & 7 deletions lib/Doctrine/Common/Annotations/CachedReader.php
Expand Up @@ -168,7 +168,7 @@ public function clearLoadedAnnotations()
*
* @return mixed The cached value or false when the value is not in cache.
*/
private function fetchFromCache($cacheKey, ReflectionClass $class)
private function fetchFromCache(string $cacheKey, ReflectionClass $class)
{
$data = $this->cache->fetch($cacheKey);
if ($data !== false) {
Expand All @@ -183,12 +183,11 @@ private function fetchFromCache($cacheKey, ReflectionClass $class)
/**
* Saves a value to the cache.
*
* @param string $cacheKey The cache key.
* @param mixed $value The value.
* @param mixed $value The value.
*
* @return void
*/
private function saveToCache($cacheKey, $value)
private function saveToCache(string $cacheKey, $value)
{
$this->cache->save($cacheKey, $value);
if (! $this->debug) {
Expand All @@ -201,11 +200,9 @@ private function saveToCache($cacheKey, $value)
/**
* Checks if the cache is fresh.
*
* @param string $cacheKey
*
* @return bool
*/
private function isCacheFresh($cacheKey, ReflectionClass $class)
private function isCacheFresh(string $cacheKey, ReflectionClass $class)
{
$lastModification = $this->getLastModification($class);
if ($lastModification === 0) {
Expand Down
25 changes: 7 additions & 18 deletions lib/Doctrine/Common/Annotations/DocParser.php
Expand Up @@ -286,33 +286,29 @@ public function setIgnoredAnnotationNames(array $names)
*
* @return void
*/
public function setIgnoredAnnotationNamespaces($ignoredAnnotationNamespaces)
public function setIgnoredAnnotationNamespaces(array $ignoredAnnotationNamespaces)
{
$this->ignoredAnnotationNamespaces = $ignoredAnnotationNamespaces;
}

/**
* Sets ignore on not-imported annotations.
*
* @param bool $bool
*
* @return void
*/
public function setIgnoreNotImportedAnnotations($bool)
public function setIgnoreNotImportedAnnotations(bool $bool)
{
$this->ignoreNotImportedAnnotations = (bool) $bool;
$this->ignoreNotImportedAnnotations = $bool;
}

/**
* Sets the default namespaces.
*
* @param string $namespace
*
* @return void
*
* @throws RuntimeException
*/
public function addNamespace($namespace)
public function addNamespace(string $namespace)
{
if ($this->imports) {
throw new RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
Expand Down Expand Up @@ -342,27 +338,22 @@ public function setImports(array $imports)
/**
* Sets current target context as bitmask.
*
* @param int $target
*
* @return void
*/
public function setTarget($target)
public function setTarget(int $target)
{
$this->target = $target;
}

/**
* Parses the given docblock string for annotations.
*
* @param string $input The docblock string to parse.
* @param string $context The parsing context.
*
* @phpstan-return list<object> Array of annotations. If no annotations are found, an empty array is returned.
*
* @throws AnnotationException
* @throws ReflectionException
*/
public function parse($input, $context = '')
public function parse(string $input, string $context = '')
{
$pos = $this->findInitialTokenPosition($input);
if ($pos === null) {
Expand All @@ -379,10 +370,8 @@ public function parse($input, $context = '')

/**
* Finds the first valid annotation
*
* @param string $input The docblock string to parse
*/
private function findInitialTokenPosition($input): ?int
private function findInitialTokenPosition(string $input): ?int
{
$pos = 0;

Expand Down
21 changes: 9 additions & 12 deletions lib/Doctrine/Common/Annotations/FileCacheReader.php
Expand Up @@ -55,15 +55,13 @@ class FileCacheReader implements Reader
/** @var int */
private $umask;

/**
* @param string $cacheDir
* @param bool $debug
* @param int $umask
*
* @throws InvalidArgumentException
*/
public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002)
{
/** @throws InvalidArgumentException */
public function __construct(
Reader $reader,
string $cacheDir,
bool $debug = false,
int $umask = 0002
) {
if (! is_int($umask)) {
throw new InvalidArgumentException(sprintf(
'The parameter umask must be an integer, was: %s',
Expand Down Expand Up @@ -210,12 +208,11 @@ public function getMethodAnnotations(ReflectionMethod $method)
/**
* Saves the cache file.
*
* @param string $path
* @param mixed $data
* @param mixed $data
*
* @return void
*/
private function saveCacheFile($path, $data)
private function saveCacheFile(string $path, $data)
{
if (! is_writable($this->dir)) {
throw new InvalidArgumentException(sprintf(
Expand Down
3 changes: 1 addition & 2 deletions lib/Doctrine/Common/Annotations/IndexedReader.php
Expand Up @@ -88,12 +88,11 @@ public function getPropertyAnnotation(ReflectionProperty $property, $annotationN
/**
* Proxies all methods to the delegate.
*
* @param string $method
* @param mixed[] $args
*
* @return mixed
*/
public function __call($method, $args)
public function __call(string $method, array $args)
{
return call_user_func_array([$this->delegate, $method], $args);
}
Expand Down

0 comments on commit 1fdda26

Please sign in to comment.