Doctrine2 Update Caused AnnotationRegistry registerLoader Error in Zend Framework 3
This error caused by the latest version of Doctrine\Common\Annotations
use PHP 7.1. That's why it use void
as return type
. And it is not supported on PHP 7.0.*. This is new feature in PHP 7.1
I use doctrine-orm-module 1.1
in my ZF3 project using PHP 7.0. And it work well. So, just replace your doctrine-orm-module
version to 1.1
.
"doctrine/doctrine-orm-module": "^1.1"
I suggest you to define the version of dependencies you used in composer. This is purposed to make your project not broken when new version of dependencies released.
To avoid this kind of problems, a good practice is to set the composer config.platform
setting:
"config": {
"platform": {
"php": "7.0.23"
}
}
This will tell composer to update packages but only to a version that still supports this PHP version. So typically, this version number will be the version of your production server.
You can try to use the following configuration. It works for me.
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "2.5.6",
"doctrine/annotations": "1.4.*",
"doctrine/dbal": "2.5.4",
...
}
Also very helpful when you reporting composer/package issues is the output of composer show. Mine looks like this:
doctrine/annotations v1.4.0 Docblock Annotations Parser
doctrine/cache v1.7.0 Caching library offering an object-oriented API for many cache backends
doctrine/collections v1.5.0 Collections Abstraction library
doctrine/common v2.6.2 Common Library for Doctrine projects
doctrine/dbal v2.5.4 Database Abstraction Layer
doctrine/doctrine-bundle 1.6.8 Symfony DoctrineBundle
doctrine/doctrine-cache-bundle 1.3.0 Symfony Bundle for Doctrine Cache
doctrine/inflector v1.2.0 Common String Manipulations with regard to casing and singular/plural rules.
doctrine/instantiator 1.0.5 A small, lightweight utility to instantiate objects in PHP without invoking their constructors
doctrine/lexer v1.0.1 Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.
doctrine/orm v2.5.6 Object-Relational-Mapper for PHP
If you have such problems in the future, go to https://packagist.org/packages/ and search for package which causes problems.
For example doctrine/annotations: https://packagist.org/packages/doctrine/annotations#v1.5.0
Then look there for (requires: php: ^7.1) and if this package matches your PHP version. (In your case using PHP 7.0 it doesn't match)
But https://packagist.org/packages/doctrine/annotations#v1.4.0 matches your PHP version (requires: php: ^5.6 || ^7.0) and you can try to use it.