Php Dersleri: Değişkenler

Değişkenler önemlidir. Değişkenler, bir yazılım dilinin temel yapı taşıdır ve olmadığı dil yoktur neredeyse. Büyük yazılımlar kodlayan kişiler veya firmalar, bu bahsettiğimiz şey yüzünden delirme aşamasına gelir zaman zaman. Böyle dememizin sebebini kapak resminden anlayabilirsiniz efendim. Portal 2 adlı oyunun bir easter egg’i aklımızda yer ettiği için böyle dedik. Hem belki önemini vurgulamak ve sizinde aklınızda kalmasını sağlamak için etkili olur diye umut ediyoruz. Saçmaladık mı biraz? Çok fazla değişken var etrafımızda ondandır…

 
Daha fazla saptırmadan değişkenleri yani variable dediğimiz şeyi ele alalım. Konunun devamında sizlere genel anlamda değişkenler ve bunların php’de kullanımları hakkında yalan yanlış bir şeyler anlatacağız…
Efendim şimdi baştan söyleyelim, farklı sitelerdeki gibi yok matematikte şu = 5, fizikte bilmem ne = x’in kare kökü gibi saçma sapan şeylerle karşınıza çıkmama taraftarıyız. Çünkü, bu tip şeyler zaten fazlasıyla sıkıcı üstüne birde yazılımı katarsak iş iyice çığırından çıkar, ne öğrenme hevesi kalır, ne başka bir şey.
 
Daha basit bir yoldan, daha gündelik örneklerle ilerleyelim diyoruz. Tabi hoşunuza gitmezse ciddi takılan, YAZILIM MÜHENDİSİ arkadaşların anlatım alternatiflerini değerlendirebilir, kopyala yapıştır mantığıyla size balık tutmak yerine balık veren adamların yazılarını okuyabilirsiniz. Kimi insan sıkıcı ve durgundur, o şekilde öğrenmek daha bir hoşuna gidebilir. Ona onu tavsiye edelim ve devam edelim…
 
Efendim değişken adı üzerinde; değişebilen, her an değişmeye müsait olan bir şeydir. Php’de, değişkenler $ işareti ile gösterilir ve bu işareti koyduktan sonra isimlendirilir. Yani değişken bir değeri tuttuğu gibi isimlendirilmelidir de.
 
Bunu şöyle örneklendirelim:
 
$ahmet = “insan”;
 
Burada bir değişken oluşturduk ve değişkenin ismini ahmet olarak belirledik. Burada dikkat etmeniz gereken kısım, $ahmet‘in tekabül ettiği değerin “insan” olduğu. Yani burada ahmet kelimesinin hiç bir önemi yok o yalnızca insan değerine ulaşmak için kullanacağımız bir etiket. Şöyle de olabilirdi: $insan = “Ahmet”. Bu da tam tersi. Bu kez de Ahmet değerine ulaşmak için insan etiketini yanı $insan değişkenini kullanacağız. Burada yazdığımız etiketi yazılımsal olarak düşünmeyin sakın, duvara asılan sticker gibi bir şeyden bahsediyoruz basit bir şekilde. Yine örneğe dönersek, sahip olduğumuz “insan” değerine $ahmet etiketini yapıştırıyoruz. Buradan ulaştığımız sonuç ise Ahmet’in bir insan olduğu basit yorumlarsak.

Şimdi biraz daha detaylandıralım. Evde, salondaki koltukta oturuyoruz. Önümüzde bir masa var ve masanın üzerinde televizyonun kumandası var.
 
Hemen atayalım değişkeni:
 
$kumandanerede = “Masanın üzerinde”;
 
Peki efendim, değişiyor demiştik değil mi bu değişkenlerin değeri için? Yes… O halde bu değeri değiştirmek adına biraz hareket edin ve yattığınız yerden bir doğrulup kumandayı elinize alın. Aldınız mı?
 
$kumandanerede = “Şu an elime aldım”;
 
Ve programımız işlemeye devam ediyor efendim. Tuşuna bastınız ve kanal değişmedi. Çok sinirlendiniz! Tuttunuz fırlattınız yere patladı gitti, darmadağın oldu alet.
 
$kumandanerede = “Parçalandı”;
 
Çalışmıyor kumanda efendim. Ne yaptınız? Kaldırıp çöpe attınız ve o değişkeni yok ettiniz. O artık ne hayatınızda var ne php kodlarınızın içerisinde.
 
unset($kumandanerede);
 
Yukarıda yazdığımız 3-5 satır saçmalığın açıklaması şudur. Php bir kodlamanın içerisinde $kumandanerede değişkeni oluşturdunuz ve buna ilk değer olarak “masanın üzerinde” dediniz. Daha sonra bir miktar kod daha çalıştı veya ziyaretçiniz site ile etkileşime girerek bir tuşa bastı ve değişkeni güncellemeniz gerekti, yani değiştirmeniz. Bu sebeple de değişkeni güncel hale getirdiniz ve “şu an elime aldım” yaptınız. Sonra bastınız çalışmadı ya, o kısmı da kullanıcının siteden çıkış yapmasına benzetelim değişken “parçalandı” yapıldı. En son da değişkenle işimiz bittiğinden unset komutu ile hafızadan sildik, koddan çıkarttık.
 
Bu unset işini yapmasak da olurdu veya $kumandanerede = “” yaptığımızda da o değişken değersiz kalırdı. Bunun mantığı, büyük değer taşıyan örneğin 5 sayfalık bir yazıyı değer olarak tutan değişkenin hafıza da yer kaplamasını istemiyorsak ve makineyi bunaltmayı sevmiyorsak silmemiz anlamına gelmekte. Tabi sonraki aşamalarda işinize yarayacak bu, şimdilik hiç ellemeyin yine olur. Değişken, değiştiği son haliyle kalsın kodda bir zararını görmezsiniz.
 
Yukarıdaki saçma örnekte dikkat etmeniz gereken bir şey daha var. Burada kumanda ile değişkene atadığımız etiketi, yani $kumandanerede etiketini özdeşleştirmeyin. Yani tuttuğumuz değer kumandanın nerede olduğu cevabını veren değişken. Yani hangi değeri tutmak istiyorsak o kısaca.
 
Şöylede yapabilirdik:
 
$kumandanintuslari = 99;
 
Aldık elimize, söktük bir tuşunu ne oldu?
 
$kumandanintuslari = 98;
 
Olay budur kısaca efendim. Devam ediyoruz…

Buraya kadar anlatmak istediğimiz mantık, oluşturduğunuz değişkene şunu demeniz:
 
“Ben seni programa dahil ediyorum bak, sana şimdilik şu değeri atıyorum. Ama daha sonra seni değiştireceğim ve sen dinamik değer alacaksın ona göre. Bunu nasıl yaparım şimdilik bilmiyorum ama ya arttırırım seni +1 şeklinde veya veritabanı kullanarak bir bilgi çekerim sen sonra o değeri alırsın. Veya hiç olmadı, sana tekrar bir konuda danışmam gerekir, etiketinden ulaşırım kaybolma, şimdilik dur bir köşede…”
 
Bir kod dizisine, henüz hiç değeri olmayan bir değişken de atayabiliriz. Bu, değişkeni kod içerisinde var etmemiz ve daha sonra kullanacağımız yerde dinamik değerini vermemiz açısından yapılan bir şeydir.
 
Örnek vermek gerekirse şudur:
 
$degersizdegisken;
 
Bazı programlama dillerinde bu Dim, Local, Global şeklinde tanımlanarak hangi aralıkta kullanılacağı belirlenir. Örneği şöyle verelim: Bir şortunuz var ve bunu yalnızca evde mi yoksa her yerde mi kullanacağınıza karar veremediniz.
 
Ama bir karar vermeniz gerekiyor 🙂
 
Her yerde giyecekseniz: Global $sortum;
Yalnızca evde giyecekseniz: Local $sortum;
 
Diyorsunuz ve geçiyorsunuz. Kodlama da nasıl karşınıza çıkıyor bu? Global olarak tanımladığınız değişken, scriptin her bölümünden ulaşılabilen bir etiket oluyor. Local ise, yalnızca komut veya bir bölüm içerisinde kullanılabileceği, bunun dışından erişimler de tanınmayacağı anlamına geliyor.
 
Buradan anladığınız üzere değişkenler, tanımlanma kabiliyetine sahip. Tanımlama biçimlerinden bir tanesi de bu, yani kullanım aralığını belirlemek. Tabi ilerleyen zamanlarda, nesne tabanlı yazılıma geçtiğinizde Public, Private, Protected gibi daha ileri seviye değişken tanımlamaları yapmayı da öğreneceksiniz. Bu P üçlüsünü de göl, deniz, okyanus gibi düşünün basit anlamda, olabilir evet. Ve dahası da var tabi ki.

Bazı programlama dillerinde, oluşturduğunuz değişkenin bir tipi olmalıdır. Nedir bu tipler? Örn: String, Integer, Float gibi şeyler. İngilizce var ise zaten anlamışsınızdır bunların ne işe yaradığını. Oluşturduğunuz değişkene atayacağınız değerin ne cinsten olacağını belirlemenize yardımcı olur bunlar.
 
Yani bir değişken String ise değeri şöyle olmalıdır: “Ben bir yazıyım”
Bir değişken Integer ise değeri şöyle olmalıdır: 56
Bir değişken Float ise değeri şöyle olmalıdır: 3.5
Bunların hepsi tiptir dediğimiz gibi, değer tipi. Bunların dışında, Boolean önemlidir. O sadece, doğru veya yanlış şeklinde cevap döndürür. Yani True veya False. Bu, bir sorgudan alacağınız cevap olabilir örneğin. Sorguyu çektiniz, değer döndü mü diye kontrol ediyorsunuz, döndüyse True, dönmediyse False değeri gelecektir. Aslında True gelmez direk çektiğiniz değer gelir de bu karışık bir konu zamanla görüp anlayacağınız cinsten. Yani bir değişkenin alabileceği değer bu olabilir.
 
$yasiyormuyuz = True;
 
Evet efendim, yaşıyoruz. Peki para var mı?
 
$paravarmi = False;
 
Yok paramız. Aynı zamanda şöyle de olabilirdi bu değişkenin değeri, üzerinden geçelim: 
 
$paravarmi = “Pağa yooook”;
 
Tiplerden bahsetmiştik. Php’nin güzel yanlarından bir tanesi de, değişken tanımlarken bu tipleri belirtmeye gerek yoktur. Yani siz bir değişkene 3 değeri ataması yaptığınızda, php o değişkenin integer (sayı) cinsinden bir değişken olduğunu anlayacaktır otomatik olarak. Bazı dillerde bu olay yoktur, yani değişken tanımlarken:
 
int $degisken = 3;
 
şeklinde belirtmenizi isterler. Php değişken konusunda esnektir. Ayrıca tanımlama yapmanız gereken kısımlarda, bunu aynı bu şekilde kullanarak manuel tanımlamanızı da yaparsınız paşalar gibi.
 
Değişkenlerin bazı kuralları vardır. Bunları maddeler halinde ezberleyin diye vererek canınızı sıkmayacağız. Sadece bir iki şeyi bilmeniz gerekiyor, onun dışındakileri zaten deneyerek öğrenirsiniz zamanla.
 
İlki, php’de, değişkene verdiğiniz ismin ilk karakteri sayı olamıyor yani ne olursa olsun harf olacak. İkincisi, değişkene verdiğiniz isimdeki büyük küçük harflerin duyarlı olduğunu bilmeniz. Yani $Ahmet ile $ahmet aynı yolun sonuna çıkmıyor ikisi de farklı değişkenler, farklı etiketlerin ulaştığı değerler. Son olarak da, bir değişkene, aynı değişkeni kullanarak değer eklemesi yapmak istediğinizde işlem sağdan başlayacak ve solda bitecektir. Bu, aynı değişkenin değerini ekleme yaparak güncellememiz gerektiğinde bir tane daha oluşturma hamallığından kurtarır bizi. Şöyle gösterelim:
 
$degisken = “Ben bir yazıyım!”;
$degisken = $degisken.” ve biraz daha uzadım!”;
 
Burada, aynı değişkeni iki kez kullanarak değerini güncelleme yaptık. Ama eski değeri de kaybetmedik. Yani sağdaki yazı, eski değer ile birleşti. Biraz karışık oldu biliyoruz ama zamanla kafaya girecek bir şey bu da. Daha basit ve hamallık yolundan yaparsak:
 
$degisken = “Ben bir yazıyım!”;
$eklenecekdeger = ” ve biraz daha uzadım!”;
$yenidegisken = $degisken.$eklenecekdeger;
 
Şimdi geldik en güzel kısıma. Php’de bir değişkene yazısal bir değer atarken, çift tırnak kullanıyorsanız, o çift tırnağın içinde farklı bir değişkeni yazmanıza da olanak vardır. Hani nokta operatörünü kullanarak değerleri birleştiriyorduk ya, onu şu yoldan da yapabiliriz yani:
 
$degisken = “Ben bir yazıyım!”;
$yenidegisken = “Aslında, $degisken ama öyle böyle…”;
 
Çift tırnak içerisindeki $degisken değerini bize verecektir, ama bunu tek tırnak ile yapamayız. Yani $yenidegisken = ‘Aslında, $degisken ama öyle böyle…’ dersek, alacağımız çıktı şudur:
 
Aslında, $degisken ama öyle böyle…
 
Çift tırnak kullanarak alacağımız çıktı ise şu şekildedir:
 
Aslında, Ben bir yazıyım! ama öyle böyle…
 
Php ile oluşturduğunuz string tipinde değişkenlerin içerisinde html etiketleri kullanmanız da mümkün. Bunu nasıl yaparsınız?
 
$degisken = “Merhaba,<br />Ben gidiyorum…”;
 
Aynen bu şekilde basit. Burada dikkat etmeniz gereken en önemli nokta, html etiketlerindeki çift tırnak ile, php kodlamadaki çift tırnağın karışmaması. Yani şu olmaz:
 
$degisken = “Merhaba,<br />Bana <a href=”olmaz.php“>tıklamak</a> ister misiniz?”;
 
Yukarıdaki gibi yazarsanız, alacağınız sonuç: Syntax Error, unexpected t_string olacaktır. Bu ne demektir? Yazım yanlışı yaptınız, beklenmeyen yazı var demek kısaca. O yazı da olmaz dediğimiz kodda karaladığımız yer tam olarak. Nasıl olabilir peki bu iş? Php kodundaki çift tırnağı tek tırnak yapabiliriz, href attributesinin olduğu bölümü nokta operatörü ile ayırarak yazabiliriz veya href attribütesini çift tırnak değil de tek tırnak olarak kullanabiliriz.
 
Bunun dışında değişkenlere daha farklı değerler de atanabilir, değişkenler dize şeklini alabilir buna Array diyoruz. Nedir bu dizeler? 10 katlı bir binanın her katı gibi düşünün.
 
$bina[0] = “Bodrum”;
$bina[1] = “Giriş katı”;
$bina[2] = “İkinci kat”;

$bina[sonsuz kat sayısı, örn:9999 gibi] = “Sonu gelmeyen katlar…”;
Şeklinde giden değişken: bir dizedir. Bunu, tamamıyla bastırmak için print_r($bina); yapabiliriz veya direk giriş katına ulaşmak için echo $bina[1] yapmamız yeterlidir. Php dizeler konusunu çok daha detaylı olarak inceleyeceğiz önümüzdeki konularda.
 
Operatörleri anlatacaktık ama yazı öyle uzadı ki, onu da başka bir zamana bırakalım. İnanın ki, aklımızda hala çok şey var değişkenler ile ilgili ama hepsini bir anda anlatmak aklınızı fena bulandırır o yüzden yavaş yavaş öğrenmeniz daha makul. Temel olarak php değişkenler bu şekilde yani mantık bu.
 
Efendim… PHP YAZILIM YÜKSEK UZMAN MÜHENDİSİ MÜDÜR BAŞKANI gibi tabirleri yazılarının sonuna ekleyen kişilerden uzak durun ve bu tiplere dikkat edin diyelim, sonra da, önümüzdeki derste görüşmek üzere köşemize çekilelim…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir