14 Şubat 2015 Cumartesi

PHP'de Değişken Kavramı (PHP Variables)

PHP'nin en büyük avantajı bir Script dili olmasıdır. PHP'nin bir Script Dili olması demek Compiler yardımıyla derleme usulü değil yazılan PHP kodlarının PHP desteği olan bir sunucuda çalışabilmesidir. Bu durum büyük ölçekli projelerde ciddi bir zaman kazancı sağlamaktadır. Örneğin ASP.NET ile proje üzerinde çalışırken projenizi çalıştırmanız gerekir fakat aynı uygulamayı PHP ile yaparsanız, proje üzerindeki bir dosyayı değiştirerek, derleme yapmadan uygulamanıza kaldığınız yerden devame debilirsiniz.

PHP'de değişkenler, sabitler ve dizinleri, projenizin içinde kullanacağınız verileri tutacak kutucuklar olarak düşünebilirsiniz. Kısaca değişkenin amacı bir değeri tekrar tekrar yazmak yerine onu tek bir kod ile kullanabilmektir. Değişkenler tüm programlama dillerinde vardır. 

Basit bir örnekle açıklamak gerekirse masanızda bir kutu olduğunu düşünün. İçerisine eşyalar koyuyorsunuz. ve kutu üzerindeki tanımlayıcı ismi değiştirebiliyorsunuz. Diyelim ki içine az kullanılan ama saklanması gereken önemli evraklarınızı koymak istediniz...bu durumda kutunun üzerine ne yazardınız? Tabiki Önemli Evraklar ismiyle bir tanımlama yapıp kutunun üzerine yapıştırırdınız. Bu tanımlamada önemli nokta ifadenin kısa, net ve özetleyici olarak kutu içeriğini doğru temsil edebilmesidir. Eğer sadece Evraklar yazsaydık içeriğin önemini atlamış olurduk.  

Php'de değişkenlerin kullanım şekli: $ (dolar işareti) ile birlikte yanına yazdığımız değer o değişkenin adını belirler. Değişken isimleri büyük-küçük harfe duyarlıdır.  En çok kullanılan değişken tipleri Integer ve String tipleridir. Integer tipi değişkenler sayılar için, String tipi değişkenler karakter dizileri için kullanılmaktadır. 

Değişken Tanımlama ve Atama Örnek:
<?php
$metin="Merhaba Dünya!";
$sayi=66;
?> 
İlk örneğimizde değişkenlerimizi tanımladık ve onlara istediğimiz değerler ile atama işlemini gerçekleştirdik. Dikkat edilirse değişkenlerimizde ne tür bir değer saklayacağını belirtmedik. PHP'de değişken tiplerinin belitilmesine pek fazla ihtiyaç olmaz. Veri tipini belirtmememizin nedeni PHP'nin  değişkene atanan değere göre türünü otomatik olarak kendisi ayarlamasıdır. Bu yönüyle PHP bize oldukça esneklik kazandırmaktadır.

Değişken tanımlarken nelere dikkat etmeliyiz?
  • Bir değişkenin adı harfle yada _ ile başlamalıdır.
  • Değişken isimlerinde boşluk bırakılmamalıdır. 
  • Boşluğun yerine _ işareti kullanabilirsiniz.
  • Değişken isminde a-z, A-Z, 0-9 ve _ karakterlerinin dışında başka bir karakter kullanamazsınız.
NOT: PHP dilinde büyük küçük harf ayrımı olduğunda $adi ile $Adi değişkenlerinin farklı değişkenler olduğunu unutmamalıyız.

String Tipinde Değişken Tanımlama Örnek:
<?php
$adSoyad= "İbrahim BAYRAKTAR";
?> 
Örneğimizde $adSoyad yazarak değişkenimizin ismini belirledik. Sonra ="İbrahim BAYRAKTAR"; tanımlaması ile $adSoyad değişkenimize İbrahim BAYRAKTAR değerini atadık. Bu işlemde atanan değeri çift tırnaklar " " arasına yazdık ve satırın sonunu ; (noktalı virgül) ile bitirdik. Eğer satır sonlarına ; koymazsak syntax hataları ile karşılaşırsınız. Sıra geldi değişkenimizi ekrana yazdırmaya:
<?php
$adSoyad= "İbrahim BAYRAKTAR";
echo $adSoyad;
?>

Kodlarımızı phpOrnekler adında bir klasöre uzantısı php olacak şekilde ornekDegiskenler adıyla kayıt edelim ve sunucumuzda dosya adını yazarak test edelim. Sayfada, $adSoyad değişkenine atadığımız değer olan İbrahim BAYRAKTAR yazdığını göreceksiniz.

PHP'de metin kullanırken mutlaka tırnak içerisinde kullanılması gerekir. Aksi takdirde PHP yorumlayıcısı bu metni komut olarak algılayacak ve bu nedenle syntax hatası verecektir. Düz metin içeren yerlerde tek tırnak, metin içerisinde değişken kullanmak istediğimizde çift tırnak kullanılır. 
<?php
$adSoyad= 'İbrahim BAYRAKTAR';
echo 'Ad Soyad: '.$adSoyad;
?> 

PHP'de nokta işareti birleştirmek demektir. JAVA'daki + işareti gibi...

Metnimiz içerisine 30$ ifadesini yazmak istersek ne yapmalıyız?
Metinlerimizde tırnak veya dolar işareti gibi PHP'nin algılayacağı (PHP için özel anlam ifade eden karakterler) yazmak istediğimizde o işareti yorumlayıcı tarafından etkisiz kılmamız gereklidir. Bunun için "\" işareti kullanılır.
<?php
$para= "30\$";
?> 

Integer Tipinde Değişken Tanımlama Örnek:
<?php
$sayi = 66;
echo $sayi;
?>
Yine string örneğimizde olduğu gibi phpOrnekler klasörümüzde bir dosyaya kaydedelim adres satırına dosya adresini yazarak test edelim. Çıktı olarak ekran 66 değeri yazdırılacaktır.

PHP'de bir değişken önceden tanımlanmadan kullanılır. Bir değişken tanımlandığında, o değişken bu değeri ilk kez alıyordur. Buna bağlı türü, yapısı vb. değişkenlik gösterebilir. Bu durumun istisnası DEFINE (tanım, değer) komutudur. Böylelikle $ işareti ile başlamayan değişmez bir değer oluşturmuş oluruz.
<?php
   define('PI', 3.14);

   echo PI;  

?> 
Değişken Değerini Değiştirmek Örnek:
<?php

$adSoyad= 'İbrahim BAYRAKTAR'; 
echo "Birinci Değer: $adSoyad'dır.<br />"; 

$adSoyad= 'Samet ULUTÜRK';
echo "İkinci Değer: $adSoyad'dır.";

?>
Örneğimizde $adSoyad adında bir değişken tanımladık ve bu değişkenimize ilk olarak "İbrahim BAYRAKTAR" değerini atadık. Daha sonra bu değişkeni echo ile yazdırdık ve ardından $adSoyad değişkenimize "Samet ULUTÜRK" değerini yeniden tanımlayıp yine echo ile ekrana yazdırdık.

PHP'de Veri Türleri

PHP'de 4 farklı temel veri türü vardır:   
  • boolean : TRUE (Doğru) ya da FALSE (Yanlış) değeri alan bir veri türüdür.     
  • integer : Bir tamsayı değer içeren bir veri türüdür.     
  • float : Büyük ve ondalıklı sayıları tanımlamaya yarayan veri türüdür.     
  • string : Karakter dizileri tanımlamaya yarayan bir veri türüdür.
PHP''de 2 bileşik veri türü vardır:      
  • Dizi (Array) : Farklı veri türlerini tek bir değişken adı ile tanımlayan bir veri kümesidir.     
  • Nesne (Object) : Farklı veri türlerine ve fonksiyonlardan oluşan bir veri topluluğuna tek bir isim ile erişim sağlayan bir veri türüdür.
PHP'de 2 özel veri türü vardır:      
  • resource : Özel fonksiyonlar tarafından oluşturulan ve kullanılan harici kaynaklara erişim için kullanılan özel bir değişkendir.
  • NULL : Özel NULL değeri, değeri olmayan bir değişkeni ifade etmektedir.
PHP'de sözde veri türleri ve değişkenler :
  • mixed : Bir fonksiyonun birden fazla veri türünde parametre alabileceğini gösterir. Ancak bu fonkisyonun tüm veri türlerini parametre olarak alabileceğini göstermez.     
  • number : Bir fonksiyonun integer veya float veri türünde parametre alabileceğini gösterir.    
  • callback : Global fonksiyonları, nesne fonksiyonlarını veya bir sınıf yapısının statik fonksiyonlarına erişim sağlayan ve bir fonksiyona, yine aynı fonksiyon tarafından daha sonra belirli koşullar sağlandığında çalıştırılmak üzere, aktarılan kod kümesidir.     
  • void : Bir fonksiyon tarafından geri verilen değer olarak tanımlandığında herhangi bir şekilde kullanımı mümkün değildir. Bir fonksiyonun parametre listesi yerinde tanımlandığında, fonksiyona herhangi bir parametre geçirilemeyeceğini gösterir.
Örnek: 4 temel veri türü birer değişkene atanarak değişken veri tiplerini belirleyelim.

Değişkenin veri tipini ve içeriğini öğrenmek için var_dump fonksiyonunu kullanıyoruz.
<?php

$deger01= 4.2;             //float tipinde bir değişken
$deger02= "BAYRAKTAR";    //string tipinde bir değişken
$deger03= 99;            //integer tipinde bir değişken 
$deger04= TRUE;         //boolean tipinde bir değişken

var_dump ($deger01, $deger02, $deger03, $deger04); 
?> 










  • PHP'de değişkenler $ işareti ile başlayan bir değişken adı ile tanımlanır. 
  • Değişkenler veri türü değerlerini yerleştirmek için kullanılır.  
  • PHP'de karakter dizilerini hem " " hem de ' ' ifadeleri arasında tanımlayabilirsiniz.  
  • PHP boolean veri tipinde TRUE değeri 1, FALSE değeri 0 olarak ekrana yazılır.
Değişkeni tanımlarken, veri tipini belirtmek istiyorsanız:
<?php
$degisken = (double)2015;
?> 
2015 varsayılan değeri integer olarak belleğe işlenir fakat biz double olarak işlenmesini istedik.

Değişkenimizin bellekte yer alan veri tipini öğrenmek için gettype fonksiyonu:
<?php
$degisken = (double)2015; 
echo gettype($degisken);
?> 

Değişkenimizin veri tipini değiştirmek için settype fonksiyonu:
<?php
$degisken = (double)2015; 
settype($degisken, integer); 
echo gettype($degisken);
?> 

PHP'de Sözdizimi Yapısı (Syntax Structure)

Sözdizimi (Syntax) Nedir?
Asıl olarak bir dilbilim terimi olan sözdizimi (syntax) kelimesi, programlama dillerinde de benzer bir anlamda kullanılmaktadır. Bir  programlama  dilinin  sözdizimi  kuralları,  fonksiyonlar, noktalama işaretleri, parantezler ya da operatörler gibi dile ait bütün bileşenlerin, nasıl bir araya gelerek bir program kodunu oluşturacaklarını belirleyen kurallar olarak tanımlanabilir.     

Örneğin PHP dilinde bütün anlamlı program deyimlerinin noktalı virgül işareti ile sonlandırılması zorunluluğu temel bir sözdizimi kuralıdır.  

NOT: Satırların değil, deyimlerin sonuna noktalı virgül konulmalıdır. Çünkü PHP kodları satır satır değil, ayraç sembolü olarak noktalı virgül işaretini kullanarak yorumlar.

PHP'de Sözdizimi Yapısı (Syntax Structure)
Bir PHP komut bloğu <?php ifadesi ile başlar ve ?> ifadesi ile sona erer.  Bir PHP dosyasını işlem görmek üzere sunucuya gönderdiğinizde, sunucuda yer alan komut yorumlayıcı dosyada işlem yapacağı satırların başlangıcını ve sonunu bu ifadelerden anlar.

Örnek:
<html>
<body>

<?php 
    echo 'Merhaba Dünya!';
?>

</body>
</html>

Örneğimiz web tarayıcımızdan bu şekilde çıktı verecektir.
Merhaba Dünya!

Web tarayıcınızda sayfa kaynağını görüntülerseniz aşağıdaki ifadeler karşınıza gelir:
<html>
<body>

Merhaba Dünya!

</body>
</html>

.php örneğimizi çalıştırdığımızda, dosya web sunucusuna gönderilir. Sunucuda yer alan komut çevirici <?php ile ?> ifadesi arasında yer alan echo komutuna işlem yapar. echo komutu bir metin dizisini ekrana yazmaya yarar. PHP komutlarına işlem yaparak elde ettiği sonuçları ve diğer HTML komutlarını olduğu gibi oluşturduğu dinamik HTML dosyasına geçirir. HTML dosyasını web tarayıcıya geri gönderir. Web tarayıcı da aldığı HTML dosyayı ekranda gösterir.

PHP kodlarının HTML kodlarıyla birlikte kullanıldığı bu gibi durumlarda, PHP deyimlerinin web tarayıcısı tarafından çözümlenerek çalıştırılabilmesi için bu kodu içeren sayfanın .php uzantısına sahip olması gerektiğini unutmayalım.

Ekrana yazdırmak istediğimiz ifadeler için, echo ya da print deyimlerini kullanırız. Bu deyimlerden sonra çift tırnak sembolü içersinde yazacağımız ifadeler, bazı özel durumların dışında, doğrudan yazıldığı şekliyle ekrana basılacaktır.

ECHO ve PRINT Arasındaki Fark Nedir?
İşlevsel anlamda bu iki komut arasında çok fazla bir fark bulunmamaktadır. Her iki deyim de ekrana "string" temelli bilgileri yazmak için kullanılır. Print  komutu,  Echo  komutundan  farklı  olarak  bir  fonksiyon  gibi çalışır  ve  bir  geri  dönüş değeri  üretir. Bu  sebeple  çok  büyük verilerin ekrana yazdırılmasında Echo deyimine göre daha yavaş çalışmaktadır. Echo bir fonksiyon gibi çalışmaz ve geriye bir değer döndürmez. Diğer bir fark ise Echo komutu ile virgülle ayrılmış birden fazla ifadeyi yazdırmaktır. Print virgülle ayırarak yazmayı desteklemez.

<?php 
print "BOZOK", "ÜNİVERSİTESİ"; 
?>
şeklinde bir kod çözümleme hatasına yol açarken, aynı kodu Echo ile çalıştırdığımızda sonuç alabiliriz.

Print komutu yazdırılacak ifadeyi argüman olarak kabul eder ve her zaman "1" değerini döndürür.
<?php 
echo print "BAYRAKTAR"; 
?>

BAYRAKTAR1

Örnek:
<?php 
    echo "Merhaba ";
    echo "Dünya!";
?>
koduna ait ekran çıktısı;
Merhaba Dünya!
şeklinde olacaktır.

Örnekte gördüğünüz gibi farklı echo komutları kullansak dahi ifadelerimiz aynı satıra yazılmakta. İfadelerimizi farklı satırlarda görmek istiyorsak eğer kodumuza küçük bir ek yapmamız gerekir.
<?php 
    echo "Merhaba ";
    echo "<br/>";
    echo "Dünya!";
?>
koduna ait ekran çıktısı;
Merhaba
Dünya!
şeklinde olacaktır.

Bu örneğimizdeki echo "<br/>; ifadesi ekrana hiç bir şey yazmamış bunun yerine birinci ve üçüncü echo komutlarının arasında satırbaşı yapma görevini üstlenmiştir. <br/>  ifadesi aslında temel bir HTML etiketidir. Yani internet tarayıcımız echo komutu ile ekrana yazdırılacak ifadeleri denetliyor ve bu ifadeleri HTML kodu olarak yorumladığı durumda doğrudan ekrana yazmak yerine çalıştırmakta ve sonucunu görüntülemektedir.

Örnek:
<?php
echo "<font size=\"3\">Favori Filmleriniz</font>";
echo "<p>";    
echo "1. Esaretin Bedeli - 1994<br>";
echo "2. BABA - 1972<br>";
echo "3. Ucuz Roman - 1994<br>";
echo "4. 12 Öfkeli Adam - 1957"; echo "</p>";
?>
Örneğimizde ilk echo komutu ile yazdırılan ifade bir HTML satırıdır. Burada "size" parametresinin değerinin belirlenmesi için çift tırnak işareti bulunmaktadır. Bu çift tırnak işaretlerinin echo komutuna ait olan ve PHP tarafından dikkate alınacak tırnaklardan ayırt edilebilmeleri için \ işaretini kullandık. \ (ters bölü) işareti PHP için özel bir karakter olup HTML deyiminde değerlerin belirlenmesinde kullanılmaktadır.

Farklı  bir yöntem olarak echo ve print komutları içerisindeki HTML kodlarında tek tırnak işaretide kullanılabilmekte. HTML yorumlayıcısı, çift tırnak işareti yerine bu işaretide kabul etmektedir. Böylelikle \ işareti kullanımınada gerek kalmayacaktır.

Örnek:
<?php
echo "<font size='3'>Favori Filmleriniz</font>";
echo "<p>";    
echo "1. Esaretin Bedeli - 1994<br>";
echo "2. BABA - 1972<br>";
echo "3. Ucuz Roman - 1994<br>";
echo "4. 12 Öfkeli Adam - 1957"; echo "</p>";
?>

PHP'de Yorum Satırları
PHP programlama dilinde kodlarımızı yazarken geriye dönüp baktığımızda hangi satırda ne kullandığımızı hangi değişkeni ne amaçla yazdığımızı zaman geçtikten sonra okuduğumuzda anlayamakta güçlük çekebiliriz. Bu nedenle programımızı yazarken ileriye dönük olarak kodlamamız gerekebilir. Bir değişkene isim verirken önemli bir detay olarak görünmese bile o değişkene isim verirken ilerde hatırlayabileceğiniz tipte olmasına özen gösterilmelidir. Kod içerisinde PHP yorumlayıcısı tarafından dikkate alınmayacak, açıklama, yorum ve bilgi amaçlı metinleri ekleyebiliriz. Bu ifadeler programın çıktısında görüntülenmeyecektir. Tek satırlı veya çok satırlı yorum satırları ekleyebiliriz.
<?php
echo 'PHP '; // Bu tek satırlık açıklamadır.
/* Bu bir çok-satırlı açıklamadır. */
echo 'öğreniyorum!';
# Bu da tek satırlık açıklamadır.
?>

Apache, PHP ve MySQL manuel Kurulumları

Merhaba 

PHP'de Değişkenler makalesine geçmeden önce örneklerle çalışabilmeniz için kendi bilgisayarımızı  sunucu olarak hazırlayıp PHP kodlaramızın derlenip çalıştırılabilmesini sağlayacak Apache, Mysql ve PHP üçlüsünü kurmamız gerekiyor. Daha önce örnek paket kurulumunu gerçekleştirdiğim WampServer Kurulumu  adlı makalemi inceleyebilirsiniz. Dilerseniz çalışma mantığını kavramak için sunucu kurma işlemini her bir uygulamayı (Apache, MySQL, Php) ayrı ayrı kurup ve yapılandırarakta gerçekleştirebilirsiniz. 

Şimdi kısaca her bir uygulamayı (Apache, MySQL, Php) kurulumlarını ayrı ayrı gerçekleştirelim.

Apache HTTP Server Kurulumu

Öncelikle Apache Projesi sitesinden Apache HTTP Server Kurulum dosyamızı indiriyoruz.

Kurulum dosyamızı indirdikten sonra  ".msi" uzantılı dosyayı çalıştırıyoruz ve kuruluma başlıyoruz.

NOT: İndirdiğiniz dosya bir ".msi" yerine sıkıştırılmış paket bir dosya ise kurulum işlemini  "\Apace24\bin" altında bulunan httpd.exe dosyasını komut satırından çalıştırınız. Yine komut satırından httpd -k install ile services kurulumunu yaparak httpd -k start ile servisleriminiz çalıştırıyoruz.

Diğer Komut Satırı Opsiyonları:
Stop Apache: httpd -k stop   
Restart Apache: httpd -k restart   
Uninstall Apache Service: httpd -k uninstall   
Test Config Syntax: httpd -t   
Version Details: httpd -V  
Command Line Options List: httpd -h

Makalemizde Windows İşletim sistemlerinde çalışan Apache HTTP Server'ın Windows altına kurulum işlemini yapıyoruz. Linux üzerine kurulum başka bir makale konusu olacaktır. Kurulumun ilk penceresi sürüm ve program hakkında bilgileri içerir. Kuruluma devam etmek için karşımıza gelen "Next" butonuna tıklıyoruz. Devamında lisans sözleşmesi hakkında bilgilerin verilecektir. Birçok program kurulumundan da aşina olduğunuz bu pencerede "Sözleşmeyi kabul ediyorum. "(I accept the terms in the license agreement.)" seçeneğini seçmeniz gerekmektedir. Aksi takdirde Next butonu aktif olmayacaktır. Bir sonraki ekranda ise Apache'nin kendini tanıttığı ve versiyona ulaşım adresi bilgisinin verildiği pencere ekrana gelir. Bu pencere bilgilendirme amaçlı olduğundan okuyup "Next" butonuna tıklıyoruz. 

Kurulumun bu aşamasında kurulum biterken bizden bir takım bilgiler isteyecektir. Domain adı gibi vs. localhost yazıp geçmeniz yeterli olacaktır. 

Bu aşamada adı geçen alanlar şu anlama gelmektedir:  
  • Network Domain: İnternet adresi  
  • Server Name: Sunucu ismi  
  • Administrator Email Adress : Yönetici e-mail adresi  
Radio butonlarından ise "for all users, on port 80 as a service Recommend" seçeneği seçilerek programın 80 port üzerinden çalışması istenir.Eğer sisteminizde port 80'i kullanan başka bir HTTP server uygulaması mevcut ise bu kısmı başka bir port ile değiştirebilirsiniz.

13 Şubat 2015 Cuma

PHP Nedir?


PHP en kısa anlamıyla web tabanlı bir programlama dilidir. PHP ifadesinin açılımı "Personal Home Page" Kişisel Anasayfa iken günümüzde gelişmesi ve daha iyi anlam kazanması ile "PHP: Hypertext Preprocessor" yani Üstün Yazı Önişlemcisi olmuştur.
 
Klasik anlamda bir web sayfası oluşturabilmek için HTML kullanılması yeterlidir. Fakat web sayfamızı etkileşimli olabilmesi için HTML tek başına yeterli değildir. Nasıl ki web sayfalarında görselliği arttırmak için CSS, JavaScript, Flash ve animasyonlardan faydalanıyorsak, web sayfamızın dinamik ve  etkileşimli olabilmesi için  server-side bir programlama dili kullanılmalıdır. 

Örneğin web sayfamızın duyurular kısmına yeni bir duyuru eklemek veya mevcut bir duyuruya yorum eklemek, alışveriş sitelerinde ihtiyacımıza yönelik ürünleri bulmamızı sağlayan bir arama motoru gibi vs...

Dünyada birçok firmanın geliştirmiş olduğu server-side teknolojileri mevcut. İşte bu server-side teknolojilerinden biriside PHP'dir.

PHP 1994 yılında Rasmus Lerdorf tarafından tamamen kişisel bir amaç doğrultusunda geliştirildi. Sonraları GPL (Açık Kaynak Kod) lisansıyla dağıtılmaya başlamış, günümüzde halen geliştirilmesine devam edilmektedir ve tamamen ücretsizdir.

PHP'nin Avantajları
  • Rahat ve hızlı kodlanabilir.
  • Öğrenilmesi kolay derlenmeden çalışan bir dildir. 
  • PHP ve beraberinde kullanılan teknolojiler GPL lisansına sahip olması nedeniyle düşük bütçelerle projeler geliştirilmesine olanak sağlamaktadır.
  • Açık kaynak olmasının gereği oldukça güvenli ve hızlıdır. 
  • Büyük bir geliştirici topluluğuna sahip olduğundan kaynak açısından oldukça zengin bir dildir
  • LAMP (Linux, Apache, MySQL ve PHP) olarak adlandırılan programların bir bütünmüş gibi hızlı çalışmasından dolayı web teknolojileri olarak LAMP yoğunlukla tercih edilmektedir.
  • Platform bağımsız olmasından dolayı (Linux, Unix, Windows, FreeBSD, OSX).
  • Birçok server (ISS, Apache, lighttpd, nginx) üzerinde çalışabilmesinden dolayı proje altyapısını değiştirmeden PHP teknolojisine kolayca geçiş yapılabilmektedir.
  • PHP, uzantı alabilmektedir. Uygulamanın içerisinde yer alan çekirdek motor, bir dizi asal kod modüllerinden ve kod uzantılarından oluşmaktadır. Bu nedenle programcılara PHP uzantıları yaratarak bazı özel işlemlerini yapabilmeleri için iki seçenek sunuluyor; ya uzantı modüllerini yazarak uygulanabilen bir derleme yapmak, ya da PHP’nin dinamik yükleme mekanizmasıyla yüklenebilecek uygulanabilir uzatmalar yaratmak.
  • Derleme usulü çalışmadığından dolayı projelerin geliştirilmesi kısa süreler almaktadır.
  • PHP pek çok veritabanı arayüzünü bünyesinde bulunduruyor. PHP, MySQL, MS SQL, Oracle, Informix, PostgreSQL ve diğerleriyle doğrudan çalışabiliyor. 
PHP ile neler yapılabilir?
  • Dinamik Web Sayfaları     
  • İçerik Yönetim Sistemleri
  • Web Tabanlı Robotlar
  • Veri depolama sistemleri
  • Web Tabanlı Otomasyon Yazılımları
  • Online Oyunlar
  • İçerik bulup derleyen botlar
  • Sosyal Medya, Forumlar, Sözlükler  
  • Anketler 
  • E-Ticaret Siteleri 
  • Dosya Yönetimi 
  • E-Posta Uygulamaları 
  • Grafik İşleme 
  • Matematiksel hesaplamalar
  • ...vb. bir çok uygulama PHP ile geliştirilebilmektedir.
PHP Dökümantasyon için tıklayınız.

11 Şubat 2015 Çarşamba

C Programlama Sınıflar ve Nesneler

Sınıf (Class) Kavramı : Nesne tabanlı programlamada gereken nesneleri sınıflar yardımıyla oluşturmaktır. Sınıfları, nesneleri oluşturmak için önceden oluşturulmuş bir kalıp veya ilk örnek olarak da düşünülebilir. Örneğin, kağıt üzerine detayları çizilmiş bir ev planını kullanarak aynı evden pek çok örnek ev oluşturulabilir. İşte burada kağıt üzerindeki bu plan sınıftır. Bu plana bakılarak yapılan ev ise sınıftan oluşturulan nesne örneğidir.

Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur. Nesnelerin her birinin durumu ve davranış özellikleri vardır. Bir Nesne, durum ve davranış özelliklerini içinde barındırır.

Oluşturulan her nesnenin durum özelliklerine veri üyesi (data member), davranış özelliklerine üye fonksiyonları (member function) denir.

Örneğin, bir bisikleti yazılım nesnesi olarak tanımlarsak bisiklet sınıfında hız, vites, jant büyüklüğü gibi veri üyeleri tanımlanabilir. Ayrıca vites değiştirmek, fren yapmak ve hızı artırmak için üye fonksiyonları tanımlamak gereklidir. 

Sınıf tanımında yer alan üyelere erişimi, farklı erişim etiketleri kullanarak sınırlandırılabilir:

public:  Bu etiket altında tanımlanan üyelere programın her yerinden erişilebilir.
private: Bu etiket altında tanımlanan üyelere sadece sınıf içerisinden erişilebilir.

Nesne (Object) Kavramı : Sınıf tipinde tanımlanan değişkenlere nesne (object) adı verilir. Sınıf tanımında public veya private belirtilmezse, tanımlanan sınıf üyelerinin erişim etiketleri private olarak varsayılır.

Sınıf Tanımlama Örnek: 
#include <iostream>
using namespace std;
class sinifOrnek
{
    public:
      int x;        //Veri Üyesi (data member)
      void yaz()    //Fonksiyon Üye (member function)
      {
           cout<<"x="<<x<<endl;
      }
};
int main()
{
   sinifOrnek y;  //sinifOrnek sınıfı tipinde y nesnesi tanımlanıyor.
   y.x = 3;      //y nesnesinin x üyesine 3 atanıyor.  
   y.yaz();     //y nesnesinin yaz() fonsiyonu çağrılıyor 
   return 0;
}

Aynı yapılarda olduğu gibi bir nesnenin veri veya fonksiyon üyelerine erişmek için nokta (.) operatörünü kullanırız. nesneAdı.üyeİsmi
   y.x = 3;      
   y.yaz();    

Örnek 1:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
class Ornek
{
      public:
             int i; //Her noktadan erişilebilen üye
             void yaz()
             {
                  t = 6.1; //Üye fonksiyondan özel t üyesine erişilebilir.
                  z = 8;
                  cout<<"i= "<<i<<endl;
                  cout<<"t= "<<t<<endl;
                  cout<<"z= "<<z<<endl;                
             }
      private:  //Sadece sınıf içinden erişilebilen üyeler
              float t;
              int z;
};
int main()
{
    Ornek nesne;  //Ornek sınıfı tipinde nesne isimli nesne tanımı
    nesne.i = 6;  //nesne isimli nesnenin i üyesine 6 atanıyor.
    nesne.yaz(); //nesne isimli nesnenin yaz() fonksiyonu çağrılır. 
getch();
}

Örnek 2:
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;
class Ornek
{
      public:
             int i; //Her noktadan erişilebilen üye
             void yaz()
             {
                  t = 6.1; //Üye fonksiyondan özel t üyesine erişilebilir.
                  z = 8;
                  cout<<"i= "<<i<<endl;
                  cout<<"t= "<<t<<endl;
                  cout<<"z= "<<z<<endl;                
             }
      private:  //Sadece sınıf içinden erişilebilen üyeler
              float t;
              int z;
};
int main()
{
    Ornek nesne;  //Ornek sınıfı tipinde nesne isimli nesne tanımı
    nesne.i = 6;  //nesne isimli nesnenin i üyesine 6 atanıyor.
    nesne.yaz(); //nesne isimli nesnenin yaz() fonksiyonu çağrılır. 
getch();
}

int main()
{
   ornek3 nesne;
   nesne.i =5;
   nesne.t =6.1;
   nesne.z =8;
   nesne.yaz()
}

Örnek 2'de public olarak etiketlenmiş a üyesine main fonksiyonundan erişim sağlanabilirken, private olarak etiketlenmiş b ve c üyelerine erişim sağlanamayacaktır.

Nesne Tanımlama Örnek: 
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>

using namespace std;

class NesneOrnek
{
      public:
            int n;
};
int main()
{
    NesneOrnek x,y; //NesneOrnek tipinde x ve y isimlerinde nesneleri tanımlıyoruz.
    y.n=6; //y nesnesinin n üyesine 6 atanır.
    cout<<" y nesnesinin n uyesi: "<<y.n<<endl;
    x=y; //" x nesnesini y nesnesine kopyalıyoruz
    cout<<" x nesnesinin n uyesi: "<<x.n<<endl;
    NesneOrnek &ref=y; //y nesnesini gösteren referans değişkeni ref tanımlıyoruz.
    cout<<" ref referansinin n uyesi: "<<ref.n<<endl;
    ref.n =5; //ref'in referans olduğu nesnenin n üyesine  ataması yapıyoruz.
    cout<<" ref referansinin n uyesi: "<<ref.n<<endl;
    NesneOrnek ndizi[3]; //NesneOrnek tipinde 3 nesneyi içeren bir dizi tanımlıyoruz.
    ndizi[2].n=4; //ndizinin 2.indeksli nesnesinin n üyesine 4 ataması yapıyoruz.
    cout<<" ndizi dizisinin 2.nesnesinin n uyesi: "<<ndizi[2].n<<endl;
getch();    
}


Örnek 3: 
Bir  Su Otamatımız olsun ve programımızda SuOtomatı adında bir sınıf tanımlayalım.

Durum özellikleri veri üyeleri (data members) :
  • ŞişeSu Fiyatı
  • Otomatta Kalan Su Sayısı
Davranış özellikleri üye fonksiyonları (member functions):
  • ilkVerilenSu(): fiyat ve Su Şişesi sayısına parametre olarak gelen değerleri atayacak. Varsayılan değeri 1 lira, sayı değeri ise 100 olarak alınacak.
  • suVerme(): Kullanıcıya ücreti gösterecek. Kullanıcı yeterli ücreti girdiyse ve otomatta su mevcut ise kullanıcıya bir şişe su verecek ve kullanıcının para üstünü hesaplayacak.
  • goster(): Su fiyatını ve otomatta kalan şişe sayısını verecek.
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
#include <iostream>
using namespace std;

class SuOtomati
{
      float fiyat;
      int sayi;
      public:
             void ilkVerilenSu (float f=1, int s=100);
             void suVerme();
             void goster(); 
};

void SuOtomati::ilkVerilenSu( float f, int s)
{
     fiyat=f;
     sayi=s;
}

void SuOtomati::suVerme()
{
     float odeme,fark;
     cout<<"Bir Sise Su Fiyati: "<<fiyat<<" lira."<<endl;
     cout<<"Odemeniz: ";
     cin>>odeme;
     if((odeme>=fiyat)&&(sayi>0))
     {
       cout<<"Su Veriliyor."<<endl;
       sayi--;
       fark=odeme-fiyat;
       if(fark>0)
       {
                 cout<<"Para Ustunuz: ";
                 if(fark<1.0)
                    cout<<fark<<" lira"<<endl;
                 else 
                    cout<<fark*100<<" kurus"<<endl;                 
       }
}
else
    cout<<"Otomatta Su Mevcut Degil";
}

void SuOtomati::goster()
{
     cout<<"Son Durum:"<<endl; 
     cout<<"Bir Sise Su Fiyati: "<<fiyat<<endl;
     cout<<"Otomatta Kalan Su Sayisi: "<<sayi<<endl; 
}
int main()
{
    SuOtomati univ;
    univ.ilkVerilenSu();
    univ.suVerme();
    univ.goster();
    getch();
}


Son örneğimizde diğer örneklerden farklı olarak ikili kapsam çözme operatörü (::) binary scope resolution operator kullandık.

void SuOtomati::ilkVerilenSu( float f, int s)

Bu operatörün amacı sınıfın dışında tanımlanan fonksiyonun hangi sınıfın üye fonksiyonu olduğunu belirtmek içindir.

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü