ho troube con l'autoloading del compositore in quanto il caricatore automatico non può risolvere Doctrine \ ORM \ Mapping \ Table. Per i Unittests ho creato classi di entità dottrina con annotazioni tipici:autloading non funziona correttamente utilizzando autoloader.php nella directory del fornitore
<?php
namespace OmniSearchTest\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Picture
*
* @ORM\Table(name="picture")
* @ORM\Entity
*/
class Picture
{
e ha creato un nuovo gestore di entità usando questa entità. Ma im ottenere il messaggio:
Doctrine\Common\Annotations\AnnotationException: [Semantical Error] The annotation "@Doctrine\ORM\Mapping\Table" in class OmniSearchTest\Entity\Picture does not exist, or could not be auto-loaded.
Per alcuni Unittests
In primo luogo, ho la seguente struttura del progetto:
/src
/OmniSearch
SomeClass.php
/tests
/OmniSearchTest
SomeClassTest.php
/composer.json
/phpunit.xml.dist
mio composer.json si presenta così:
{
/* ... */
"require": {
"php": ">=5.4",
"doctrine/orm": "2.*"
},
"require-dev": {
"phpunit/phpunit": "4.*"
},
"autoload": {
"psr-0": {
"OmniSearch\\": "src/"
}
},
"autoload-dev": {
"psr-0": {
"OmniSearchTest\\": "tests/"
}
}
}
Mentre la mia phpunit appare così:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
strict="true"
verbose="true">
<testsuites>
<testsuite name="omnisearch">
<directory>./tests/OmniSearchTest</directory>
</testsuite>
</testsuites>
</phpunit>
Ho tagliato questo progetto da un altro mio progetto zf2 in cui l'autoloading funzionava correttamente. Non sono sicuro che cosa esattamente è andato storto perché l'autoload_namespaces.php generato automaticamente contiene la mappatura:
'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'),
whohaaaa, hai ragione ... Ho creato un bootstrap.php nella directory di test e modificare il phpunit.xml di bootstrap questo file – torsten
e ho semplicemente utilizzare autoload.php del compositore da ' directory del venditore e ha funzionato (non utilizzo nemmeno bootstrap.php): '$ loader = require_once __DIR __. '/ vendor/autoload.php'; AnnotationRegistry :: registerLoader (array ($ loader, 'loadClass')); ' –