Как автоматически загрузить унаследованную сущность доктрины в Zend Framework 3?

<?php
namespace MyProject\Model;

/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}

/**
* @Entity
*/
class Employee extends Person
{
// ...
}

Как определить автозагрузку для наследования сущности вышеупомянутой доктрины? Или мы можем поместить каждую сущность в отдельный файл, такой как Entity \ Person.php, Employee \ Person.php?

0

Решение

Вы должны поместить каждый класс PHP в свой собственный файл, если вы хотите, чтобы ваш проект был совместим с (например) PSR-4 (автозагрузчик).

Ссылаясь на спецификацию PSR-4:

  1. При загрузке файла, который соответствует полному имени класса …

    1. Непрерывная серия из одного или нескольких ведущих имен пространств имен и подпространств имен, не включая ведущий разделитель пространств имен, в полностью определенном имени класса («префикс пространства имен») соответствует по меньшей мере одному «базовому каталогу».
    2. Смежные имена подпространств имен после «префикса пространства имен» соответствуют подкаталогу в «базовом каталоге», в котором разделители пространства имен представляют разделители каталога. Имя подкаталога ДОЛЖНО совпадать с регистром имен под-пространства имен.
    3. Имя завершающего класса соответствует имени файла, оканчивающемуся на .php, Имя файла ДОЛЖНО совпадать с регистром имени завершающего класса.

Итак, если вы создаете класс Person в MyProject\Model пространства имен, автозагрузчик найдет его только в …/Model/Person.php файл. И Employee класс должен идти в отдельный …/Model/Employee.php файл для того, чтобы быть доступным для автозагрузчика.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector