- Katılım
- 2 Mar 2015
- Konular
- 59,185
- Mesajlar
- 88,381
- Online süresi
- 4ay 14g
- Reaksiyon Skoru
- 14,227
- Altın Konu
- 2,398
- Başarım Puanı
- 1,051
- TM Yaşı
- 11 Yıl 1 Ay 21 Gün
- MmoLira
- 694,336
- DevLira
- 234
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
PHP yaygın olarak zayıf türde bir dil olarak kabul edilir. PHP'de, bir değişkene herhangi bir değer atamadan önce türünü bildirmeniz gerekmez. PHP ayrıştırıcısı, değişkenleri mümkün olduğunca uyumlu türe dönüştürmeye çalışır.
Örneğin, 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ısal değere dönüştürür.
Örnek
Aşağıdaki örneğe bir göz atın.
PHP:
<?php
function addition($x, $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
$x="10";
$y=20;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
First number: 10 Second number: 20 Addition: 30
Ancak yukarıdaki örnekteki $x geçerli bir sayısal gösterimi tutmayan bir dize ise, o zaman bir hatayla karşılaşırsınız.
PHP:
<?php
function addition($x, $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
$x="Hello";
$y=20;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
PHP Fatal error: Uncaught TypeError: Unsupported operand
types: string + int in hello.php:5
Tip İpuçları
Tip ipucu verme, PHP 5.6 sürümünden itibaren desteklenir. Bu, kodunuzda bildirilen bir değişkenin beklenen tipini açıkça belirtebileceğiniz anlamına gelir. PHP, fonksiyon argümanlarına, dönüş değerlerine ve sınıf özelliklerine tip ipucu vermenize olanak tanır. Bununla, daha sağlam kod yazmak mümkündür.Yukarıdaki programdaki toplama fonksiyonuna tür ipucu özelliğini dahil edelim.
function addition(int $x, int $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
Değişken bildirimlerinde yalnızca veri türlerini kullanmanın eşleşmeyen tür istisnasının ortaya çıkmasını engellemediğini unutmayın, çünkü PHP dinamik olarak türlendirilmiş bir dildir. Başka bir deyişle, $x="10" ve $y=20 yine de toplamayı 30 olarak sonuçlandırırken, $x="Hello" ayrıştırıcının hatayı ortaya çıkarmasına neden olur.
Örnek
PHP:
<?php
function addition($x, $y) {
echo "First number: $x \n";
echo "Second number: $y \n";
echo "Addition: " . $x+$y . "\n\n";
}
$x=10;
$y=20;
addition($x, $y);
$x="10";
$y=20;
addition($x, $y);
$x="Hello";
$y=20;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
First number: 10
Second number: 20
Addition: 30
First number: 10
Second number: 20
Addition: 30
First number: Hello
Second number: 20
PHP Fatal error: Uncaught TypeError: Unsupported operand
types: string + int in hello.php:5
strict_types (sıkı_türler)
PHP, tip dönüşümü için daha katı kurallar koyabilir, böylece "10" örtük olarak 10'a dönüştürülmez. Bu, declare() ifadesinde strict_types yönergesini 1 olarak ayarlayarak uygulanabilir.declare() ifadesi PHP kodunda "<?php" etiketinden hemen sonra gelen ilk ifade olmalıdır.
Örnek
Aşağıdaki örneğe bir göz atın.
PHP:
<?php
declare (strict_types=1);
function addition(int $x, int $y) {
echo "First number: $x Second number: $y Addition: " . $x+$y;
}
$x=10;
$y=20;
addition($x, $y);
?>
Aşağıdaki çıktıyı üretecektir:
First number: 10 Second number: 20 Addition: 30
Şimdi, eğer $x "10" olarak ayarlanırsa, örtük dönüşüm gerçekleşmeyecek ve aşağıdaki hatayla sonuçlanacaktır:
PHP Fatal error: Uncaught TypeError: addition(): Argument #1
($x) must be of type int, string given
PHP 7'den itibaren, beklenmeyen dönüş değerlerini önlemek için fonksiyon dönüşleri için tip ipucu desteği genişletilmiştir. Parametre listesinden sonra iki nokta üst üste ( : )sembolüyle öneklenen amaçlanan tipi ekleyerek dönüş değerlerine tip ipucu verebilirsiniz.
Örnek
Aşağıdaki division() fonksiyonunun dönüş değerine bir tip ipucu ekleyelim.
PHP:
<?php
declare (strict_types=1);
function division(int $x, int $y) : int {
return $x/$y;
}
$x=10;
$y=20;
$result = division($x, $y);
echo "First number: $x Second number: $y Addition: " . $result;
?>
Fonksiyon, int türünde olmayan (yani fonksiyonun dönüş değeri için kullanılan tür ipucu) 0,5 döndürdüğünden, aşağıdaki hata görüntülenir:
Fatal error: Uncaught TypeError: division(): Return value must be
of type int, float returned in hello.php:5

