PHP'de bir fonksiyon bir veya daha fazla parametreyi kabul edecek şekilde tanımlanabilir. Fonksiyon parametreleri, bir fonksiyonu tanımlarken fonksiyon adının önündeki parantez içinde virgülle ayrılmış ifadeler listesidir. Bir parametre herhangi bir skaler tipte (sayı, dize veya Boolean), bir dizi, bir nesne veya hatta başka bir fonksiyon olabilir.
function foo($arg_1, $arg_2, $arg_n) {
statements;
return $retval;
}
Argümanlar, fonksiyon gövdesi içinde işlenecek değişkenler olarak hareket eder. Bu nedenle, herhangi bir normal değişkenle aynı adlandırma kurallarını izlerler, yani "$" ile başlamalı ve alfabetik karakterler, rakamlar ve alt çizgi içerebilirler.
Not: Tanımlanabilecek parametre sayısında herhangi bir sınırlama yoktur.
Parametreli bir fonksiyonun çağrılması gerektiğinde, fonksiyon tanımındaki argüman sayısı kadar değerin fonksiyona iletildiğinden emin olmalısınız.
Parametrelerle tanımlanan bir fonksiyon, geçirilen değerlere bağlı olarak dinamik olarak değişen bir sonuç üretebilir.
Örnek
Aşağıdaki kod, iki parametreli addition() fonksiyonunun tanımını içerir ve ikisinin toplamını görüntüler. Çalışma zamanı çıktısı, fonksiyona geçirilen iki değere bağlıdır.
<?php
function addition($first, $second) {
$result = $first+$second;
echo "First number: $first \n";
echo "Second number: $second \n";
echo "Addition: $result";
}
addition(10, 20);
$x=100;
$y=200;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir :
First number: 10
Second number: 20
Addition: 30
First number: 100
Second number: 200
Addition: 300
Resmi ve Gerçek Argümanlar
Bazen
argüman terimi parametre için kullanılır. Aslında, iki terim arasında belirli bir fark vardır.
- Parametre, fonksiyonun tanımında kullanılan değişkeni ifade ederken, argüman ise çağrı sırasında fonksiyona geçirilen değeri ifade eder.
- Bir argüman bir sabit, bir değişken veya bir ifade olabilir.
- Bir fonksiyon tanımındaki parametrelere sıklıkla resmi argümanlar denir ve geçirilenlere gerçek argümanlar denir.
- Resmi argümanların ve gerçek argümanların adları aynı olmak zorunda değildir. Gerçek argümanın değeri, soldan sağa doğru sırayla karşılık gelen resmi argümana atanır.
- Fonksiyonda tanımlanan resmi argümanların sayısı ile geçirilen gerçek argümanların sayısı aynı olmalıdır.
Örnek
PHP, gerçek argümanların sayısı resmi argümanlardan az olduğunda bir
ArgumentCountError yükseltir . Ancak, ek gerçek argümanlar resmi argümanlardan fazlaysa göz ardı edilir.
<?php
function addition($first, $second) {
$result = $first+$second;
echo "First number: $first \n";
echo "Second number: $second \n";
echo "Addition: $result \n";
}
# Actual arguments more than formal arguments
addition(10, 20, 30);
# Actual arguments fewer than formal arguments
$x=10;
$y=20;
addition($x);
?>
Aşağıdaki çıktıyı üretecektir:
First number: 10
Second number: 20
Addition: 30
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments
to function addition(), 1 passed in /home/cg/root/20048/main.php
on line 16 and exactly 2 expected in /home/cg/root/20048/main.php:2
Argümanlar Tür Uyuşmazlığı
PHP dinamik olarak yazılmış bir dildir, dolayısıyla gerçek bir argümanın değerini resmi bir argümanla kopyalarken tür denetimini zorlamaz. Ancak, fonksiyon gövdesinin içindeki herhangi bir ifade, onu desteklemeyen belirli bir veri türüne özgü bir işlem gerçekleştirmeye çalışırsa, PHP bir istisna oluşturur.
Yukarıdaki addition() fonksiyonunda, sayısal argümanların geçirildiği varsayılmıştır. PHP'nin string argümanları geçirilirse herhangi bir itirazı yoktur, ancak eklemeyi gerçekleştiren ifade, string türü için "+" işlemi tanımlanmadığı için istisna ile karşılaşır.
Örnek
Aşağıdaki örneğe bir göz atın.
<?php
function addition($first, $second) {
$result = $first+$second;
echo "First number: $first \n";
echo "Second number: $second \n";
echo "Addition: $result";
}
# Actual arguments are strings
$x="Hello";
$y="World";
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
PHP Fatal error: Uncaught TypeError: Unsupported operand types: string + string in hello.php:5
Ancak PHP zayıf tipli bir dildir. Değişkenleri mümkün olduğunca uyumlu tiplere dönüştürmeye çalışır. Dolayısıyla, geçirilen değerlerden biri bir sayının dize gösterimiyse ve ikincisi sayısal bir değişkense, PHP toplama işlemini gerçekleştirmek için dize değişkenini sayısala dönüştürür.
Örnek
Aşağıdaki örneğe bir göz atın.
<?php
function addition($first, $second) {
$result = $first+$second;
echo "First number: $first \n";
echo "Second number: $second \n";
echo "Addition: $result";
}
# Actual arguments are strings
$x="10";
$y=20;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
First number: 10
Second number: 20
Addition: 30