Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

PHP'de Değişkenler ve Tipler: Kodunuzu Anlamanın Temelleri

PHP'de Değişkenler ve Tipler: Kodunuzu Anlamanın Temelleri

PHP, web geliştirme dünyasının en güçlü ve esnek dillerinden biridir. Bu esnekliğin temelinde, verileri depolama ve işleme şeklimizi belirleyen değişkenler ve veri tipleri yatar. Bu makalede, PHP'deki değişkenlerin ne olduğunu, nasıl tanımlandıklarını ve hangi veri tiplerini desteklediğini ayrıntılı bir şekilde inceleyeceğiz. Ayrıca, PHP'nin tip esnekliği ve modern PHP'deki tip güvenliği yaklaşımlarına da değineceğiz.

Değişken Nedir?
En basit tanımıyla, bir değişken, bilgisayar belleğinde bir veri parçasını saklamak için kullanılan bir "kutudur". Bu kutunun içine sayıları, metinleri, listeleri veya daha karmaşık yapıları koyabilirsiniz. PHP'de bir değişkenin değeri programın yürütülmesi sırasında değiştirilebilir, bu da onları dinamik ve etkileşimli uygulamalar oluşturmak için vazgeçilmez kılar.

PHP'de Değişken Tanımlama
PHP'de değişkenler her zaman bir dolar işareti ($) ile başlar. Dolar işaretinden sonra bir harf veya alt çizgi (_) gelmeli, ardından harfler, rakamlar veya alt çizgiler gelebilir. PHP'deki değişken isimleri büyük/küçük harf duyarlıdır.

Kod:
<?php
$isim = "Ahmet"; // Geçerli değişken
$sayi = 123;   // Geçerli değişken
$_adres = "İstanbul"; // Geçerli değişken

// Geçersiz değişken isimleri:
// $1sayi = 456;  // Rakamla başlayamaz
// $ad-soyad = "Mehmet"; // Tire (-) kullanılamaz
?>

Değişkenlere değer atamak için atama operatörü (=) kullanılır. PHP, bir değişkene ilk değer atandığında onun tipini otomatik olarak belirler. Bu, PHP'yi dinamik olarak tiplendirilmiş bir dil yapar.

PHP Veri Tipleri
PHP, birçok farklı veri tipini destekler. Bu tipler, verinin ne tür bir bilgi olduğunu ve nasıl depolandığını veya işlendiğini belirler. Temel olarak dört ana kategoriye ayrılabilirler:

1. Scalar (Tekil) Tipler:
Bu tipler, yalnızca bir değer tutabilen basit veri tipleridir.

a. String (Metin Dizisi)
Metin dizileri, harfler, sayılar ve sembollerden oluşan karakter dizileridir. Tek tırnak veya çift tırnak içinde tanımlanabilirler. Çift tırnak içinde değişkenler ayrıştırılır (interpolasyon), tek tırnak içinde ayrıştırılmaz.

Kod:
<?php
$mesaj = "Merhaba Dünya!"; // Çift tırnak
$tek_tirnak_mesaj = 'Bu bir tek tırnaklı metin.'; // Tek tırnak

echo "Mesaj: " . $mesaj . "[br]"; // Çift tırnakta değişken ayrıştırılır
echo 'Mesaj: ' . $tek_tirnak_mesaj . "[br]"; // Tek tırnakta değişken ayrıştırılmaz

// Değişken interpolasyonu
$isim = "Ayşe";
$selamlama = "Merhaba $isim!"; // "Merhaba Ayşe!"
$farkli_selamlama = 'Merhaba $isim!'; // "Merhaba $isim!"
echo $selamlama . "[br]";
echo $farkli_selamlama . "[br]";
?>

b. Integer (Tam Sayı)
Tam sayılar, ondalık veya kesirli kısmı olmayan sayılardır (pozitif, negatif veya sıfır).

Kod:
<?php
$yas = 30; // Onluk tabanda
$sicaklik = -5;
$buyuk_sayi = 2147483647; // 32-bit sistemlerde max değer

// Farklı tabanlarda sayılar:
$oktal_sayi = 012; // Sekizlik (8) tabanında: 10
$heks_sayi = 0xA;  // Onaltılık (16) tabanında: 10
$ikili_sayi = 0b1010; // İkilik (2) tabanında: 10 (PHP 5.4+)
echo $oktal_sayi . "[br]";
echo $heks_sayi . "[br]";
echo $ikili_sayi . "[br]";
?>

c. Float (Kayan Noktalı Sayı) / Double
Ondalık veya kesirli kısmı olan sayılardır. PHP'de genellikle "float" veya "double" olarak anılırlar, temelde aynıdırlar.

Kod:
<?php
$fiyat = 19.99;
$pi = 3.14159;
$bilimsel_gosterim = 1.2e3; // 1200
echo $fiyat . "[br]";
echo $pi . "[br]";
echo $bilimsel_gosterim . "[br]";
?>

d. Boolean (Mantıksal)
Sadece iki olası değeri vardır: true (doğru) veya false (yanlış). Genellikle koşullu ifadelerde kullanılırlar.

Kod:
<?php
$aktif = true;
$admin = false;

if ($aktif) {
    echo "Kullanıcı aktif.[br]";
} else {
    echo "Kullanıcı pasif.[br]";
}
?>

2. Compound (Bileşik) Tipler:
Birden fazla değeri veya karmaşık yapıları tutabilen tiplerdir.

a. Array (Dizi)
Diziler, tek bir değişken altında birden fazla değeri depolamak için kullanılır. İndeksli (sayısal anahtarlı) veya ilişkisel (metin anahtarlı) olabilirler.

Kod:
<?php
// İndeksli dizi
$renkler = ["Kırmızı", "Yeşil", "Mavi"];
echo "İlk renk: " . $renkler[0] . "[br]";

// İlişkisel dizi
$kullanici = [
    "ad" => "Ali",
    "soyad" => "Can",
    "yas" => 25
];
echo "Kullanıcı Adı: " . $kullanici["ad"] . "[br]";

// Diziye eleman ekleme
$renkler[] = "Sarı"; // Diziye sonuna ekler
$kullanici["sehir"] = "Ankara";
?>

  • İndeksli dizilerde elemanlara sıfırdan başlayan sayısal indekslerle erişilir.
  • İlişkisel dizilerde elemanlara tanımlanan metinsel anahtarlarla erişilir.
  • Diziler PHP'de çok güçlü bir yapıdır ve neredeyse her yerde kullanılır.

b. Object (Nesne)
Nesneler, veri (özellikler) ve bu veriler üzerinde işlem yapabilen işlevleri (metotlar) bir araya getiren yapılardır. Nesne yönelimli programlamanın (OOP) temelidirler.

Kod:
<?php
class Ogrenci {
    public $ad;
    public $soyad;

    public function __construct($ad, $soyad) {
        $this->ad = $ad;
        $this->soyad = $soyad;
    }

    public function tamAdGetir() {
        return $this->ad . " " . $this->soyad;
    }
}

$ogrenci1 = new Ogrenci("Deniz", "Yılmaz");
echo "Öğrenci: " . $ogrenci1->tamAdGetir() . "[br]";
?>

3. Special (Özel) Tipler:
Bunlar, özel durumları veya kaynakları temsil eden tiplerdir.

a. NULL
NULL, bir değişkenin hiçbir değer taşımadığını gösteren özel bir tiptir. Bir değişken:
  • Değer atanmadan tanımlandığında
  • Kendisine NULL değeri atandığında
  • unset() fonksiyonu ile yok edildiğinde
NULL olur.

Kod:
<?php
$degisken; // Tanımlandı ama değer atanmadı, NULL
var_dump($degisken); // Output: NULL

$baska_degisken = "Merhaba";
unset($baska_degisken); // Değişkeni yok et, NULL yapar
var_dump($baska_degisken); // Output: NULL (Notice: Undefined variable)
?>

b. Resource (Kaynak)
Kaynak tipi değişkenler, dış kaynaklara (veritabanı bağlantıları, dosya işlemleri, resimler vb.) bir referans tutar. Genellikle bu kaynaklar otomatik olarak kapatılır, ancak fclose() gibi fonksiyonlarla manuel olarak da kapatılabilirler.

Kod:
<?php
$dosya = fopen("ornek.txt", "r"); // Dosya kaynağı
var_dump($dosya); // Output: resource(...)
if ($dosya) {
    fclose($dosya); // Kaynağı kapat
}
?>

PHP'nin Tip Esnekliği ve Otomatik Tip Dönüşümü (Type Juggling)
PHP, gevşek tipli bir dildir, yani bir değişkenin tipi, içerdiği değere göre otomatik olarak değişebilir. Bu, bazen kod yazmayı kolaylaştırsa da, beklenmedik tip dönüşümlerine yol açarak hatalara neden olabilir.

Kod:
<?php
$sayi_str = "10";
$sayi_int = 5;
$toplam = $sayi_str + $sayi_int; // "10" otomatik olarak integer'a dönüşür
echo "Toplam: " . $toplam . "[br]"; // Output: Toplam: 15

$bool_val = true;
$sayi_int2 = 10;
$sonuc = $bool_val + $sayi_int2; // true -> 1, false -> 0
echo "Sonuç: " . $sonuc . "[br]"; // Output: Sonuç: 11
?>

Bir değişkenin tipini öğrenmek için gettype() fonksiyonu veya daha detaylı bilgi için var_dump() fonksiyonu kullanılabilir.

Kod:
<?php
$isim = "Can";
$yas = 30;
$pi = 3.14;
$dogru = true;
$liste = [1, 2, 3];
$bos = NULL;

echo "İsim tipi: " . gettype($isim) . "[br]";     // string
echo "Yaş tipi: " . gettype($yas) . "[br]";       // integer
echo "Pi tipi: " . gettype($pi) . "[br]";         // double
echo "Doğru tipi: " . gettype($dogru) . "[br]";   // boolean
echo "Liste tipi: " . gettype($liste) . "[br]";   // array
echo "Boş tipi: " . gettype($bos) . "[br]";       // NULL

echo "[br][b]var_dump() ile detaylı bilgi:[/b][br]";
var_dump($isim);
var_dump($yas);
var_dump($liste);
?>

Tip Belirtme (Type Hinting) ve Tip Bildirimleri (Type Declarations) - Modern PHP
PHP 7 ve sonraki sürümlerle birlikte, fonksiyon parametrelerinde, dönüş değerlerinde ve sınıf özelliklerinde tip belirtme (type hinting) özelliği gelmiştir. Bu, kodun daha okunabilir, bakımı daha kolay olmasını sağlar ve hataları derleme/çalışma zamanında yakalamaya yardımcı olur.

Kod:
<?php
// Parametre tip belirtme
function topla(int $sayi1, int $sayi2): int {
    return $sayi1 + $sayi2;
}

echo "Toplam: " . topla(5, 7) . "[br]"; // Output: Toplam: 12

// topla("a", 7); // TypeError verir

// Dönüş değeri tip belirtme
function kullaniciBilgisi(string $ad, int $yas): string {
    return "Ad: $ad, Yaş: $yas";
}

echo kullaniciBilgisi("Murat", 40) . "[br]";
?>

"Gevşek tiplendirme, esneklik sağlarken, tip bildirimleri kodun güvenilirliğini artırır. Modern PHP, bu iki dünyanın en iyi yönlerini bir araya getirerek dengeli bir yaklaşım sunar." - Bilge Geliştirici

Değişken Kapsamı (Variable Scope)
Değişkenin programın hangi bölümünden erişilebildiğini belirler. PHP'de başlıca üç kapsam türü vardır:

  • Yerel (Local) Kapsam: Bir fonksiyon içinde tanımlanan değişkenler yalnızca o fonksiyon içinde erişilebilir.
  • Küresel (Global) Kapsam: Fonksiyon dışında tanımlanan değişkenler küreseldir ve her yerden erişilebilir. Ancak bir fonksiyon içinde global bir değişkene erişmek için global anahtar kelimesi kullanılmalıdır.
  • Statik (Static) Kapsam: Bir fonksiyonun çağrılması sona erdikten sonra bile değerini koruyan yerel değişkenlerdir.

Kod:
<?php
$globalDegisken = "Ben globalim"; // Global kapsam

function testKapsam() {
    $yerelDegisken = "Ben yerelim"; // Yerel kapsam
    echo $yerelDegisken . "[br]";

    // Global değişkene erişim (doğru yol)
    global $globalDegisken;
    echo "Fonksiyon içinden global: " . $globalDegisken . "[br]";

    // Statik değişken
    static $sayac = 0;
    $sayac++;
    echo "Sayac: " . $sayac . "[br]";
}

testKapsam(); // Sayac: 1
testKapsam(); // Sayac: 2

echo $globalDegisken . "[br]"; // Global değişkene erişim
// echo $yerelDegisken; // Hata! Yerel değişkene dışarıdan erişilemez.
?>

example_php_variable_scope.png

Bu görsel, PHP'deki değişken kapsamlarını şematik olarak göstermektedir. (Gerçek bir görsel URL'si kullanmanız önerilir.)

Sonuç
PHP'deki değişkenler ve veri tipleri, her PHP geliştiricisinin sağlam bir temel oluşturması için anlaması gereken kritik kavramlardır. PHP'nin dinamik yapısı esneklik sunarken, PHP 7 ve sonraki sürümlerle gelen tip bildirimleri, daha güçlü ve hatasız uygulamalar yazmamıza olanak tanır. Kodunuzu yazarken değişkenlerin nasıl davrandığını ve hangi tipte veriyi tuttuklarını anlamak, performanslı ve bakımı kolay kod yazmanın anahtarıdır. Unutmayın, iyi bir programcı sadece kodu yazan değil, aynı zamanda kodu anlayan ve optimize edendir.

PHP Resmi Dökümantasyon: Değişkenler
PHP Resmi Dökümantasyon: Tipler
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected