Php 8.5 Adlandırılmış Argümanlarla Dizi Açma (Array Unpacking)

Katılım
29 Kas 2020
Konular
218
Mesajlar
2,212
Çözüm
6
Online süresi
5mo 2d
Reaksiyon Skoru
2,492
Altın Konu
35
Başarım Puanı
226
Yaş
29
MmoLira
20,238
DevLira
51
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

PHP 8, fonksiyonlara ve metotlara argüman iletmek için daha esnek bir yol sağlayan adlandırılmış argümanlar (named arguments) kavramını tanıttı. Bu özellik, argümanları pozisyona göre değil, ada göre belirtmenize olanak tanıyarak kodun okunabilirliğini ve sürdürülebilirliğini artırır. Adlandırılmış argümanlarla birlikte, ilişkisel dizileri fonksiyonlara adlandırılmış argümanlar olarak iletmek için dizi açma (array unpacking) özelliğini de kullanabiliriz.

6.5.1. Adlandırılmış Argümanlara Kısa Bir Bakış

Dizi açmaya geçmeden önce, adlandırılmış argümanları kısaca hatırlayalım. PHP 8'de, fonksiyon ve metot argümanlarını ismen belirtebilirsiniz:

Örnek:
PHP:
function sendMessage($to, $message, $from) {
    // Fonksiyon mantığı burada
}

// Geleneksel pozisyonel kullanım:
// sendMessage('Bob', 'Hello, Bob!', 'Alice');

// Adlandırılmış argümanlarla kullanım (sıra önemli değil):
sendMessage(from: 'Alice', message: 'Hello, Bob!', to: 'Bob');
Adlandırılmış argümanlar, parametre adlarını açıkça belirterek, fonksiyon çağrısını anlamayı kolaylaştırır.

6.5.2. Adlandırılmış Argümanlarla Dizi Açma​

Dizi açma (üç nokta `...` ile), bir ilişkisel dizinin anahtar-değer çiftlerini, bir fonksiyon veya metodun adlandırılmış argümanları olarak iletmenize olanak tanır. Bu, özellikle bir fonksiyona geçirmek istediğiniz değerlerin bir dizide toplandığı durumlarda çok kullanışlıdır.

Örnek:
PHP:
function createPerson($name, $age, $city) {
    echo "Kişi oluşturuldu: $name, $age yaşında, $city'li.";
}

$personData = [
    'name' => 'Alice',
    'age' => 30,
    'city' => 'Wonderland',
];

// Dizi açma kullanarak adlandırılmış argümanları iletme
createPerson(...$personData);
// Çıktı: Kişi oluşturuldu: Alice, 30 yaşında, Wonderland'li.
Buradaki `...$personData` sözdizimi, ilişkisel diziyi açar ve anahtarlarını (`name`, `age`, `city`) fonksiyondaki ilgili parametre adlarıyla eşleştirir.

6.5.3. Varsayılan Değerler ve Dizi Açma​

Adlandırılmış argümanlar için varsayılan değerleri, dizi açma ile birlikte kullanabilirsiniz. İlişkisel dizide varsayılan değere sahip bir parametreye karşılık gelen bir anahtar yoksa, **varsayılan değer** kullanılır.

Örnek:
PHP:
function createPerson($name = 'Unknown', $age = 0, $city = 'Unknown') {
    echo "Kişi: $name, $city";
}

$personData = [
    'name' => 'Alice',
    'age' => 30,
    // 'city' anahtarı burada eksik
];

// 'city' parametresi, dizide bulunmadığı için varsayılan değeri ('Unknown') alacaktır.
createPerson(...$personData);
// Çıktı: Kişi: Alice, Unknown
Bu durumda, 'city' parametresi, ilişkisel dizide mevcut olmadığı için varsayılan olarak 'Unknown' değerini kullanacaktır.

6.5.4. Dizi Açma ve Variadic Fonksiyonlar (...$messages)

Değişken sayıda argüman kabul eden variadic fonksiyonlar da adlandırılmış argümanlarla dizi açmadan yararlanabilir. Dizi açma, dinamik sayıda argümanı variadic bir fonksiyona aktarmanıza olanak tanır.

Örnek:
PHP:
function logMessages(...$messages) {
    foreach ($messages as $msg) {
        echo "LOG: $msg" . PHP_EOL;
    }
}

$logData = [
    'messages' => ['Error: Something went wrong', 'Info: Task completed'],
];

// Variadic fonksiyona argüman dizisini açarak iletiyoruz.
// Not: Burada adlandırılmış argüman yerine pozisyonel argümanlar açılıyor.
logMessages(...$logData['messages']);
/*
Çıktı:
LOG: Error: Something went wrong
LOG: Info: Task completed
*/
Bu örnekte, `...$logData['messages']` sözdizimi, mesaj dizisini logMessages() fonksiyonunun değişken sayıda argümanı olarak açar.

PHP 8'in adlandırılmış argümanlarla dizi açma özelliği, verilere fonksiyonlara ve metotlara iletmek için güçlü ve esnek bir yol sunar. Bu, kod okunabilirliğini artırır ve ilişkisel dizileri fonksiyon argümanları olarak kullanmayı basitleştirir.
 
Paylaşım için teşekkürler
 
Eline sağlık! Paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)