nur-sery/nur_src/ldap/syntaxes/AbstractSyntax.php

58 lines
1.4 KiB
PHP
Raw Normal View History

2024-04-04 22:21:20 +04:00
<?php
namespace nur\ldap\syntaxes;
use nur\A;
use nur\ldap\LdapAttr;
use nur\ldap\LdapConn;
abstract class AbstractSyntax {
/** @var LdapConn */
protected $conn;
function initConn(LdapConn $conn) {
$this->conn = $conn;
}
function newAttr(string $name, ?array &$values, ?int $flags): LdapAttr {
return new LdapAttr($name, $values, $this, $flags);
}
function getPhpType(): ?string {
return "string";
}
/** @throws SyntaxException si $value est invalide */
abstract function php2ldap($value): ?string;
abstract function ldap2php(string $value);
/** transformer les valeurs d'un attribut LDAP en PHP */
function fromMultivaluedLdap($values): ?array {
A::ensure_narray($values);
if ($values !== null) {
foreach ($values as &$value) {
$value = $this->ldap2php($value);
}; unset($value);
}
return A::filter_n($values)?: null;
}
/** transformer la valeur d'un attribut LDAP en PHP */
function fromMonovaluedLdap($value) {
if (is_array($value)) $value = A::first($value);
if ($value === null) return null;
else return $this->ldap2php($value);
}
/** transformer une(des) valeur(s) PHP en attribut LDAP */
function fromPhp($values): ?array {
A::ensure_narray($values);
if ($values !== null) {
foreach ($values as &$value) {
$value = $this->php2ldap($value);
}; unset($value);
}
return A::filter_n($values)?: null;
}
}