edmondscommerce/doctrine-static-meta

View on GitHub
src/Entity/Interfaces/UsesPHPMetaDataInterface.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace EdmondsCommerce\DoctrineStaticMeta\Entity\Interfaces;

use Doctrine\ORM\Mapping\ClassMetadata as DoctrineClassMetaData;
use EdmondsCommerce\DoctrineStaticMeta\DoctrineStaticMeta;

/**
 * @see \EdmondsCommerce\DoctrineStaticMeta\DoctrineStaticMeta::buildMetaData
 */
interface UsesPHPMetaDataInterface
{
    /**
     * Protected static methods starting with this prefix will be used to load property Doctrine meta data
     */
    public const METHOD_PREFIX_GET_PROPERTY_DOCTRINE_META = 'metaFor';

    /**
     * Protected static methods starting with this prefix will be used to load class level Doctrine meta data, this is
     * run after the property level metadata has been loaded
     */
    public const METHOD_PREFIX_GET_CLASS_DOCTRINE_META = 'classMetaFor';

    /**
     * private methods beginning with this will be run at construction time to do things like set up ArrayCollection
     * properties
     *
     * @var string
     */
    public const METHOD_PREFIX_INIT = 'init';

    /**
     * This method is called at construction time and performs the basic initialisation tasks such as setting
     * collection properties to be an instance of ArrayCollection
     */
    public const METHOD_RUN_INIT = 'runInitMethods';

    public const METHOD_DEBUG_INIT = 'initDebugIds';

    public static function loadMetadata(DoctrineClassMetaData $metadata): void;

    public static function getDoctrineStaticMeta(): DoctrineStaticMeta;
}