declare(strict_types=1);
abstract class StrictArray extends ArrayObject
{
final public function __construct(array $array = []) {
$this->checkArray(
...array_filter(
$array,
static fn(int|string $key): bool => is_string($key),
ARRAY_FILTER_USE_KEY,
),
);
parent::__construct(array: $array);
}
#[Override]
public function append(mixed $value): void
{
// Заглушка для запрета добавления значения в массив
}
#[Override]
public function offsetSet(mixed $key, mixed $value): void
{
// Заглушка для запрета установки значения по ключу
}
}
final class Parameters extends StrictArray
{
protected function checkArray(
int $keyInt,
string $keyString,
bool $keyBool = false,
?DateTimeImmutable $keyDate= null,
): void {
}
}
$parameters = new Parameters([
'keyInt' => 1,
'keyDate' => new DateTimeImmutable('now'),
'keyBool' => true,
'keyString' => 'abc'
]);
<?php
function formatList(array $list): string
{
$result = '';
foreach ($list as $key => $value) {
if (!is_array($value)) {
$result .= "<li>{$key} => {$value}</li>";
continue;
}
$result .= "<li>{$key} =></li>";
foreach ($value as $item) {
$result .= formatList($item);
}
}
if ((debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1]['function'] ?? '') !== 'formatList') {
$result = "<ul>{$result}</ul>";
}
return $result;
}
print formatList($arr);
<ul><li>id => 1</li><li>name => item1</li><li>items =></li><li>id => 2</li><li>name => item2</li><li>items =></li><li>id => 3</li><li>name => item3</li><li>items =></li><li>id => 4</li><li>name => item4</li><li>items =></li><li>id => 5</li><li>name => item5</li><li>items =></li><li>id => 6</li><li>name => item6</li><li>items =></li></ul>
N 63-ФЗ от 06.04.2011, ст. 2.2
Простой электронной подписью является электронная подпись, которая посредством использования кодов, паролей или иных средств подтверждает факт формирования электронной подписи определенным лицом.
$taxAuthorities = $this->db->entityManager
->getRepository(TaxAuthority::class)
->findBy(['active' => true]);
foreach ($taxAuthorities as $taxAuthority) {
// здесь работа с объектом через геттеры
// например, $taxAuthority->getTaxType()
}
$qb = $this->db->entityManager->createQueryBuilder();
$query = $qb
->select('ta.taName', 'ta.taId', 'ta.taAmount', 'tam.tamColumnValue', 'tp.tpId', 'tp.tpName')
->from(TaxAuthority::class, 'ta')
->innerJoin(TaxType::class, 'tt', Join::WITH, $qb->expr()->eq('tt.ttId', 'ta.taTtId'))
->innerJoin(TaxAuthMatch::class, 'tam', Join::WITH, $qb->expr()->eq('tam.tamTaId', 'ta.taId'))
->innerJoin(TaxTypeMatch::class, 'ttm', Join::WITH, $qb->expr()->eq('ttm.ttmTtId', 'tt.ttId'))
->innerJoin(TaxProfileDefs::class, 'tpd', Join::WITH, $qb->expr()->eq('tpd.tpdTtId', 'tt.ttId'))
->innerJoin(TaxProfile::class, 'tp', Join::WITH, $qb->expr()->eq('tp.tpId', 'tpd.tpdTpId'))
->where($qb->expr()->eq('ta.taActive', 'Y'))
->orderBy('tam.tamColumnValue');
// Посмотреть текст DQL
// echo $query->getDQL();
$result = $query->getQuery()->getResult();