Tôi đã thực hiện việc tự động tải của nhà soạn nhạc vì trình nạp tự động không thể giải quyết Doctrine \ ORM \ Mapping \ Table. Đối với unittests tôi đã tạo ra lớp thực thể thuyết với chú thích điển hình:tải tự động không hoạt động chính xác khi sử dụng autoloader.php trong thư mục nhà cung cấp
<?php
namespace OmniSearchTest\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Picture
*
* @ORM\Table(name="picture")
* @ORM\Entity
*/
class Picture
{
và tạo ra một người quản lý thực thể mới bằng cách sử dụng các đối tượng này. Nhưng im nhận được thông báo:
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.
Đối với một số unittests
Thứ nhất, tôi có cấu trúc dự án sau:
/src
/OmniSearch
SomeClass.php
/tests
/OmniSearchTest
SomeClassTest.php
/composer.json
/phpunit.xml.dist
composer.json của tôi trông như thế này:
{
/* ... */
"require": {
"php": ">=5.4",
"doctrine/orm": "2.*"
},
"require-dev": {
"phpunit/phpunit": "4.*"
},
"autoload": {
"psr-0": {
"OmniSearch\\": "src/"
}
},
"autoload-dev": {
"psr-0": {
"OmniSearchTest\\": "tests/"
}
}
}
Trong khi phpunit của tôi trông rất giống như thế này:
<?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>
Tôi đã loại bỏ dự án này khỏi dự án zf2 khác của tôi, nơi quá trình tự động tải hoạt động tốt. Im không chắc chắn chính xác những gì đã xảy ra vì autoload_namespaces.php autogenerated chứa ánh xạ:
'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'),
whohaaaa, bạn nói đúng ... tôi đã tạo ra một bootstrap.php trong thư mục kiểm tra và sửa đổi các phpunit.xml để bootstrap file này – torsten
Và tôi chỉ cần sử dụng autoload.php nhà soạn nhạc của từ ' thư mục vendor' và nó hoạt động (tôi thậm chí không dùng bootstrap.php): '$ loader = require_once __DIR __. '/ vendor/autoload.php'; AnnotationRegistry :: registerLoader (mảng ($ loader, 'loadClass')); ' –