/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/Ldap/Entry.php
121 строка
3 KB
Christian Flothmann
use constructor property promotion
01 июн 2024, 11:26
01 июн 2024, 11:26
557641c
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Ldap; /** * @author Charles Sarrazin <charles@sarraz.in> * @author Karl Shea <karl@karlshea.com> */ class Entry { /** * @var array<string, array> */ private array $attributes = []; /** * @var array<string, string> */ private array $lowerMap = []; /** * @param array<string, array> $attributes */ public function __construct( private string $dn, array $attributes = [], ) { foreach ($attributes as $key => $attribute) { $this->setAttribute($key, $attribute); } } /** * Returns the entry's DN. */ public function getDn(): string { return $this->dn; } /** * Returns whether an attribute exists. * * @param string $name The name of the attribute * @param bool $caseSensitive Whether the check should be case-sensitive */ public function hasAttribute(string $name, bool $caseSensitive = true): bool { $attributeKey = $this->getAttributeKey($name, $caseSensitive); if (null === $attributeKey) { return false; } return isset($this->attributes[$attributeKey]); } /** * Returns a specific attribute's value. * * As LDAP can return multiple values for a single attribute, * this value is returned as an array. * * @param string $name The name of the attribute * @param bool $caseSensitive Whether the attribute name is case-sensitive */ public function getAttribute(string $name, bool $caseSensitive = true): ?array { $attributeKey = $this->getAttributeKey($name, $caseSensitive); if (null === $attributeKey) { return null; } return $this->attributes[$attributeKey] ?? null; } /** * Returns the complete list of attributes. */ public function getAttributes(): array { return $this->attributes; } /** * Sets a value for the given attribute. */ public function setAttribute(string $name, array $value): void { $this->attributes[$name] = $value; $this->lowerMap[strtolower($name)] = $name; } /** * Removes a given attribute. */ public function removeAttribute(string $name): void { unset($this->attributes[$name]); unset($this->lowerMap[strtolower($name)]); } private function getAttributeKey(string $name, bool $caseSensitive = true): ?string { if ($caseSensitive) { return $name; } return $this->lowerMap[strtolower($name)] ?? null; } }