ulmus-ldap/src/EntityTrait.php

49 lines
1.1 KiB
PHP
Raw Normal View History

<?php
namespace Ulmus\Ldap;
use Ulmus\{ Ulmus, EventTrait, Query, Common\EntityResolver, Common\EntityField };
use Ulmus\Ldap\Annotation\Classes\{ ObjectClass, ObjectType, };
trait EntityTrait {
use \Ulmus\EntityTrait;
/**
* @Id('readonly' => true)
*/
public string $dn;
/**
* @Field
*/
public string $cn;
/**
* @Field
*/
public array $objectClass;
public static function resolveEntity() : EntityResolver
{
return Ulmus::resolveEntity(static::class);
}
public static function repository(string $alias = Repository::DEFAULT_ALIAS) : Repository
{
return new Repository(static::class, $alias);
}
public static function field($name, ? string $alias = null) : EntityField
{
return new EntityField(static::class, $name, $alias ?: Repository::DEFAULT_ALIAS, Ulmus::resolveEntity(static::class));
}
public static function fields(array $fields, ? string $alias = null) : string
{
return implode(', ', array_map(function($item) use ($alias){
return static::field($item, $alias);
}, $fields));
}
}