Maslosoft Mangan API
 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 
	<?php
/**
 * This software package is licensed under AGPL or Commercial license.
 *
 * @package maslosoft/mangan
 * @licence AGPL or Commercial
 * @copyright Copyright (c) Piotr Masełkowski <pmaselkowski@gmail.com>
 * @copyright Copyright (c) Maslosoft
 * @copyright Copyright (c) Others as mentioned in code
 * @link https://maslosoft.com/mangan/
 */
namespace Maslosoft\Mangan\Annotations;
use Maslosoft\Addendum\Helpers\ParamsExpander;
use Maslosoft\Mangan\Decorators\EmbeddedDecorator;
use Maslosoft\Mangan\Meta\EmbeddedMeta;
use Maslosoft\Mangan\Meta\ManganPropertyAnnotation;
/**
 * Annotation for embedded document in mongo
 * `defaultClassName` will be used for getting empty properties,
 * but any type of embedded document can be stored within this field
 * Examples:
 *
 * Embed with namespaced class literal:
 *
 * ```
 * @Embedded(Company\Product\EmbeddedClassName)
 * ```
 * 
 * Embed with default class - short notation - `EmbeddedClassName` imported via
 * use statement:
 *
 * ```
 * @Embedded(EmbeddedClassName)
 * ```
 *
 * @Conflicts('EmbeddedArray')
 * @Conflicts('DbRef')
 * @Conflicts('DbRefArray')
 * @Conflicts('Related')
 * @Conflicts('RelatedArray')
 *
 * @Target('property')
 * @template Embedded(${defaultClassName})
 * @author Piotr
 */
class EmbeddedAnnotation extends ManganPropertyAnnotation
{
    public $value = true;
    public function init()
    {
        $data = ParamsExpander::expand($this, ['class']);
        $meta = new EmbeddedMeta($data);
        $meta->single = true;
        $this->getEntity()->embedded = $meta;
        $this->getEntity()->propagateEvents = true;
        $this->getEntity()->owned = true;
        $this->getEntity()->decorators[] = EmbeddedDecorator::class;
    }
}
	 API documentation generated by ApiGen