Как создать динамическую сущность без физического имени класса и файла?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как создать динамическую сущность без физического имени класса и файла?

Сообщение Anonymous »

Я создаю проект, который требует, чтобы я динамически создавал объекты, используя веб -интерфейс. Как правило, вы определяете объекты, использующие XML, PHP или атрибуты. Но когда я запускаю SQL uprgradeschema (), используя Schematool, таблица не вставляется, если я использую не классное имя.

Код: Выделить всё

// EntityService.php

public function register (string $entityName, callable $builderFn) : void
{
// Define entity name
$entityName = DynamicEntity::class; // works (only one can be made)
$entityName = DynamicEntity::class . 'Person'; // does not yield metadata

// Create ClassMetadata for the dynamic entity
$metadata = new ClassMetadata($entityName);
$builder = new ClassMetadataBuilder($metadata);
$builder->createField('id', 'integer')->makePrimaryKey()->generatedValue()->build();

// Run custom builder
call_user_func($builderFn, $builder);

// Yield metadata
$metadata = $builder->getClassMetadata();

// Register the dynamic entity metadata with EntityManager
$this->getManager()->getMetadataFactory()->setMetadataFor($entityName, $metadata);
}
< /code>
// SomeCoreClass.php

$this->app()->entity()->register('Tree', function (ClassMetadataBuilder $builder) {
$builder->setTable('tree_for_sake_of_it');

// later to dynamically iterate my EntityBlueprint→fields to register the entity
$builder->createField('red', 'string')->nullable()->build();
});
< /code>
// DatabaseService.php

public function upgrade () : void
{
// Prepare entity manager
$entityManager = $this->app()->entity()->getManager();

// Get all metadata, including dynamic entities
$allMetadata = $entityManager->getMetadataFactory()->getAllMetadata();
$schemaTool = new SchemaTool($entityManager);

// Update SQL database
$schemaTool->updateSchema($allMetadata);
}
< /code>
Как только я получу базовую работу бэкэнда, я в идеале смогу запустить вышеперечисленное, чтобы зарегистрировать объекты; Впоследствии позволяя мне создавать конечные точки для обновления, удаления и т. Д. MapedSuperClass 
, но предпочел бы не использовать имя класса вообще
[*] Мне нужно смотреть на кэширование потенциально
[*] Я пытаюсь избежать использования CLI

Я новичок в доктрине Орм, и очень ценит любые мысли или предложения. Спасибо в авансе!


Подробнее здесь: https://stackoverflow.com/questions/797 ... e-and-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»