Příklady použití Array funkcí
Praktické příklady ze skutečného kódu aplikace.
getArrayValue() – Bezpečný přístup k nastavení
Načítání SMTP konfigurace
Aplikace používá getArrayValue() k bezpečnému čtení vnořeného nastavení:
// core/Email/Mailer.php
use function Core\Array\getArrayValue;
// Kontrola, zda je SMTP zapnutý
if (getArrayValue(CONFIG, 'smtp:use')) {
$host = getArrayValue(CONFIG, 'smtp:host');
$port = getArrayValue(CONFIG, 'smtp:port');
$user = getArrayValue(CONFIG, 'smtp:user');
$password = getArrayValue(CONFIG, 'smtp:password');
// Konfiguruj SMTP...
}
Výhody:
- Bez chyby
Undefined array keypři chybějícím nastavení - Čitelný kód – vidíš strukturu přímo v klíči
- Vrací
nullmísto varovací chyby
SEO metadata z nastavení
// app/tags/seo/metadata.php
use function Core\Array\getArrayValue;
// Čtení SEO titulků s fallback na NULL
$prefix = getArrayValue(CONFIG, 'metadata:title:prefix_' . LANG);
$title = $prefix ? $prefix . ' | ' . $pageTitle : $pageTitle;
// Čtení OG meta tagů
$ogTitle = getArrayValue(CONFIG, 'metadata:og:title', true);
$ogImage = getArrayValue(CONFIG, 'metadata:og:image', true);
$ogCreator = getArrayValue(CONFIG, 'metadata:og:creator', true);
// Pokud je $emptyIsNull = true, vrací null pro prázdné hodnoty
// Výsledek: $output je vnořené pole se všemi nastavenímí // [ // 'smtp' => [ // 'use' => '1', // 'host' => 'smtp.example.com', // 'port' => '587' // ], // 'email' => [ // 'from' => 'app@example.com' // ] // ]
### Session správa
```php
// core/Session/Session.php
use function Core\Array\setArrayValue;
// Uložení dat do session s vnořenou cestou
setArrayValue($_SESSION, 'user:id', $userId);
setArrayValue($_SESSION, 'user:name', $userName);
setArrayValue($_SESSION, 'user:permissions:admin', true);
setArrayValue($_SESSION, 'user:permissions:editor', false);
// Session je automaticky vnořená
// $_SESSION['user']['id'] = $userId
// $_SESSION['user']['permissions']['admin'] = true
deleteArrayValue() – Čištění session
// core/Session/Session.php
use function Core\Array\deleteArrayValue;
// Smaž konkrétní session data
deleteArrayValue($_SESSION, 'user:temp_data');
deleteArrayValue($_SESSION, 'notification:pending');
// Bezpečné – pokud klíč neexistuje, nic se nestane
deleteArrayValue($_SESSION, 'nonexistent:key');
Logout – vyčištění uživatelských dat
// Příklad logout procedury
$_SESSION['user'] = []; // nebo explicitní smazání:
deleteArrayValue($_SESSION, 'user:id');
deleteArrayValue($_SESSION, 'user:name');
deleteArrayValue($_SESSION, 'user:permissions');
--
flattenArray() – Zploštění pro transport
Transformace pro API
use function Core\Array\flattenArray;
$userProfile = [
'personal' => [
'name' => 'John Doe',
'email' => 'john@example.com'
],
'CONFIGs' => [
'notifications' => true,
'theme' => 'dark'
]
];
$flat = flattenArray($userProfile);
// Výsledek pro API response:
// [
// 'personal:name' => 'John Doe',
// 'personal:email' => 'john@example.com',
// 'CONFIGs:notifications' => true,
// 'CONFIGs:theme' => 'dark'
// ]
Transformace pro formulář s jedno-klíčovými vstupy
use function Core\Array\flattenArray;
$config = [
'database' => [
'host' => 'localhost',
'port' => 3306,
'name' => 'myapp'
],
'cache' => [
'enabled' => true,
'ttl' => 3600
]
];
$flat = flattenArray($config);
// HTML formulář s jednorádkovými inputy:
// <input name="database:host" value="localhost">
// <input name="database:port" value="3306">
// <input name="cache:ttl" value="3600">
Vlastní oddělovač
use function Core\Array\flattenArray;
// Zploštění s tečkami místo dvojtečky
$flat = flattenArray($userProfile, '.');
// Výsledek:
// [
// 'personal.name' => 'John Doe',
// 'personal.email' => 'john@example.com',
// 'CONFIGs.notifications' => true
// ]
unflattenArray() – Rozvinování struktury
Zpět z API na vnořené data
use function Core\Array\unflattenArray;
// Obdržení zploštěných dat z API/formuláře
$flatData = [
'user:id' => 123,
'user:name' => 'John',
'user:email' => 'john@example.com',
'address:city' => 'Prague',
'address:zip' => '12000'
];
// Rozvinutí zpět na vnořenou strukturu
$user = unflattenArray($flatData);
// Výsledek:
// [
// 'user' => [
// 'id' => 123,
// 'name' => 'John',
// 'email' => 'john@example.com'
// ],
// 'address' => [
// 'city' => 'Prague',
// 'zip' => '12000'
// ]
// ]
Reversibilita – úplná transformace
use function Core\Array\flattenArray;
use function Core\Array\unflattenArray;
$original = [
'CONFIGs' => [
'email' => [
'smtp' => 'localhost',
'port' => 587
],
'theme' => 'dark'
]
];
// Zploštění
$flat = flattenArray($original);
// Uložení/přenos v nějaké formě...
// Rozvinutí zpět
$restored = unflattenArray($flat);
// $restored === $original (true)
Kombinované scénáře
Formulářový workflow
use function Core\Array\flattenArray;
use function Core\Array\setArrayValue;
// 3. Rozviň na strukturu
use function Core\Array\unflattenArray;
$data = unflattenArray($cleaned);
// ['user' => ['name' => 'John', 'email' => 'john@example.com']]
// 4. Uložení do DB
DB::query("INSERT INTO users SET data = ?", [json_encode($data)]);
Session s vnořenými daty
use function Core\Array\setArrayValue;
use function Core\Array\getArrayValue;
use function Core\Array\deleteArrayValue;
// 1. Přihlášení uživatele
setArrayValue($_SESSION, 'user:id', 42);
setArrayValue($_SESSION, 'user:name', 'John');
setArrayValue($_SESSION, 'user:roles:admin', true);
// 2. Čtení dat
$userId = getArrayValue($_SESSION, 'user:id');
$isAdmin = getArrayValue($_SESSION, 'user:roles:admin');
// 3. Odhlášení
deleteArrayValue($_SESSION, 'user:id');
deleteArrayValue($_SESSION, 'user:name');
deleteArrayValue($_SESSION, 'user:roles');
Best Practices
Správně – Bezpečný přístup
use function Core\Array\getArrayValue;
// Vrací null pro chybějící klíč
$value = getArrayValue(CONFIG, 'some:nested:key', false);
if ($value !== null) {
// Bezpečný kód
}
Špatně – Přímý přístup
// Varování: Undefined array key
$value = CONFIG['some']['nested']['key'];
Špatně – Ruční prefix removal
// Zbytečné a náchylné na chyby
foreach ($_POST as $key => $value) {
if (str_starts_with($key, 'f_')) {
$clean_key = substr($key, 2);
$clean[$clean_key] = $value;
}
}
Správně – Kombinace operací
use function Core\Array\setArrayValue;
use function Core\Array\getArrayValue;
$config = [];
setArrayValue($config, 'db:host', 'localhost');
setArrayValue($config, 'db:port', 3306);
$host = getArrayValue($config, 'db:host');
Debugging tipy
Inspekce vnořené struktury
use function Core\Array\flattenArray;
$nested = [
'user' => [
'profile' => ['name' => 'John']
]
];
// Zploštění pro snadný debug výstup
$flat = flattenArray($nested);
// Nyní je snadnější vidět všechny klíče:
// 'user:profile:name' => 'John'
echo json_encode($flat, JSON_PRETTY_PRINT);
Ověření struktury
use function Core\Array\getArrayValue;
// Bezpečný test existence klíče
if (getArrayValue($array, 'some:key') !== null) {
echo "Klíč existuje\n";
}