Перед тем, как приехать, я много чего перепробовал, много читал и прошу прощения, если я не нашел ту часть, где у меня был бы мой ответ. Я буду счастлив, что на меня указывают.
Я использую Silex MicroFramework, что-то основанное на Symfony. Уже много лет я не создавал Php, и все это сложно интегрировать, но хорошо … Я смог спроектировать некоторые классы, и сейчас я пытаюсь перенести пакет jasongrimes / silex-simpleuser в экземпляр доктрины на основе сущностей.
Когда я устанавливаю их из основного проекта через консоль, у меня нет проблем. Я пытаюсь обновить тесты, поэтому мне нужно создать схему, и вот тогда я получаю хорошее сообщение Неустранимая ошибка PHP: необработанное исключение «Doctrine \ ORM \ Mapping \ MappingException» с сообщением «Class \ SimpleUser \ Entity \ User не является допустимым объектом или сопоставленным суперклассом». в /home/thibault/dev/silex-simpleuser/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php:147
Я предполагаю, что на моем пути возникла ошибка при создании этой схемы, чего-то не хватает …
<?php
require_once __DIR__ . "/../vendor/autoload.php";
use SimpleUser\UserServiceProvider;
use Silex\Application;
use Silex\Provider;
use Silex\Provider\DoctrineServiceProvider;
use Silex\Provider\SecurityServiceProvider;
use Doctrine\ORM\Tools\SchemaTool;
//phpunit_bootstrap.php
$app = new \Silex\Application();
$app->register(new \Silex\Provider\SecurityServiceProvider(),
array('security.firewalls' => array('dummy-firewall' => array('form' => array())))
);
$app->register(new \Silex\Provider\DoctrineServiceProvider());
$app['db'] = array(
'driver' => 'pdo_sqlite',
'path' => __DIR__.'/../../../cache/test/.ht.sqlite',
);
$app->register(new UserServiceProvider());
/*
* Setup the Schema
*/
$cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
$deleted = $cacheDriver->deleteAll();
$em = $app["user.doctrine.em"];
$tool = new \Doctrine\ORM\Tools\SchemaTool($em);
$classes = array(
$em->getClassMetadata('\\SimpleUser\\Entity\\User'),
$em->getClassMetadata('\\SimpleUser\\Entity\\CustomeFields'),
);
$tool->createSchema($classes);
<?php
namespace SimpleUser\Entity;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* \Doctrine\ORM\Mapping\Entity
* @ORM\Table(name="simple_user_user")
*/
class User implements AdvancedUserInterface, \Serializable
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=true)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=100, unique=true)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* @var string
*
* @ORM\Column(name="salt", type="string", length=255)
*/
private $salt;
/**
* @var array
*
* @ORM\Column(name="roles", type="array")
*/
private $roles;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=100)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="time_created", type="integer")
*/
private $timeCreated;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=100, nullable=true, unique=true)
*/
private $username;
/**
* @var boolean
*
* @ORM\Column(name="is_enabled", type="boolean")
*/
private $isEnabled = '1';
/**
* @var string
*
* @ORM\Column(name="confirmation_token", type="string", length=100, nullable=true)
*/
private $confirmationToken;
/**
* @var integer
*
* @ORM\Column(name="time_password_reset_requested", type="integer", nullable=true)
*/
private $timePasswordResetRequested;
Задача ещё не решена.
Других решений пока нет …