PHP - Varsayılan Argümanlar

Carissa

Administrator
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,442
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 7 Gün
Başarım Puanı
1,051
MmoLira
695,207
DevLira
234
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!



Emirsel programlamayı destekleyen çoğu dil gibi, PHP'deki bir fonksiyon varsayılan bir değere sahip bir veya daha fazla argümana sahip olabilir. Sonuç olarak, böyle bir fonksiyon herhangi bir değer geçirilmeden çağrılabilir. Geçirilmesi amaçlanan bir değer yoksa, fonksiyon işleme için varsayılan değerini alır. Fonksiyon çağrısı bir değer sağlarsa, varsayılan değer geçersiz kılınır.

function fun($arg1 = val1, $arg2 = val2) {
Statements;
}

Böyle bir fonksiyon farklı şekillerde çağrılabilir.

fun(); # Function will use defaults for both arguments
fun($x); # Function passes $x to arg1 and uses default for arg2
fun($x, $y); # Both arguments use the values passed

Örnek 1

Burada greeting() adında iki argümanlı bir fonksiyon tanımlıyoruz , her ikisinin de varsayılan değerleri string'dir . Bunu bir string, iki string ve herhangi bir argüman olmadan geçirerek çağırıyoruz.


PHP:
<?php 
   function  greeting($arg1="Hello", $arg2="world") {
      echo $arg1 . " ". $arg2 . PHP_EOL;
   }

   greeting();
   greeting("Thank you");
   greeting("Welcome", "back");
   greeting("PHP");
?>

Aşağıdaki çıktıyı üretecektir:

Hello world
Thank you world
Welcome back
PHP world


Örnek 2

Sadece bazı argümanları varsayılan değere sahip, diğerlerine ise değer geçirilmesi gereken argümanlarla bir fonksiyon tanımlayabilirsiniz.

PHP:
<?php 
   function  greeting($arg1, $arg2="World") {
      echo $arg1 . " ". $arg2 . PHP_EOL;
   }

   # greeting(); ## This will raise ArgumentCountError
   greeting("Thank you");
   greeting("Welcome", "back");
?>

Aşağıdaki çıktıyı üretecektir:

Thank you World
Welcome back

İlk çağrı (argümansız) ArgumentCountError'ı yükseltir çünkü ilk argüman için değer geçirmeniz gerekir. Yalnızca bir değer geçirilirse, listedeki ilk argüman tarafından kullanılır.

Ancak, varsayılanı olmayan argümanlardan önce varsayılanı olan argümanlar bildirirseniz , bu tür bir fonksiyon yalnızca her ikisi için de değerler geçirilirse çağrılabilir. İlk argümanın varsayılanı, ikinci argümanın ise geçirilen değeri kullandığı bir durum olamaz.

greeting () fonksiyonu artık varsayılan değere sahip $arg1'e ve varsayılan değere sahip olmayan $arg2'ye sahip.

function greeting($arg1="Hello", $arg2) {
echo $arg1 . " ". $arg2 . PHP_EOL;
}

"PHP" dizesini geçirirseniz:

greeting("PHP");

Sonucu "Merhaba PHP" olarak yazdırmak istediğimizde aşağıdaki hata mesajı görüntülenecektir.

PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function
greeting(), 1 passed in hello.php on line 10 and exactly 2 expected

Örnek 3

Üç dersteki notların yüzdesini hesaplayan percentage() isimli bir fonksiyon tanımlayalım.

Her bir dersten alınan notların 100 üzerinden olduğu varsayıldığında, fonksiyon tanımındaki $total argümanına varsayılan değer olarak 300 verilir.
PHP:
<?php
   function  percent($p, $c, $m, $ttl=300) {
      $per = ($p+$c+$m)*100/$ttl;
      echo "Marks obtained: \n";
      echo "Physics = $p Chemistry = $c Maths = $m \n";
      echo "Percentage = $per \n";
   }
   percent(50, 60, 70);
?>

Aşağıdaki çıktıyı üretecektir:

Marks obtained:
Physics = 50 Chemistry = 60 Maths = 70
Percentage = 60

Ancak her bir dersten alınabilecek en yüksek not 50 ise o zaman dördüncü değeri fonksiyona geçirmeniz gerekmektedir, aksi takdirde yüzde 150 üzerinden değil 300 üzerinden hesaplanacaktır.

PHP:
<?php
   function  percent($p, $c, $m, $ttl=300) {
      $per = ($p+$c+$m)*100/$ttl;
      echo "Marks obtained: \n";
      echo "Physics = $p Chemistry = $c Maths = $m \n";
      echo "Percentage = $per \n";
   }
   percent(30, 35, 40, 150);
?>

Aşağıdaki çıktıyı üretecektir:

Marks obtained:
Physics = 30 Chemistry = 35 Maths = 40
Percentage = 70
 

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