1 den 3´e kadar. Toplam 3 Sayfa bulundu

Konu: PHP Öğrenelim

  1. #1

    Üyelik Tarihi
    Feb 2008
    Mesajlar
    608

    Exclamation PHP Öğrenelim

    PHP'ye Giriş

    C/C++, Pascal, hatta Visual Basic bilen kişiler için PHP öğrenmek hemen hemen bir öğleden sonrayı ayırmak suretiyle yapılabilecek bir iştir. Bu dillere aşina olmayanlar ise belki bir kaç öğleden sonralarını ayırmak zorunda kalabilirler! PHP, bir Script dilidir; yani kodları düz yazı dosyaları halinde kaydedilir ve kullanılacağı ortamda bir yorumlayıcı tarafından yorumlanır. Bu, PHP ile yazacağınız programları, derlemek yani ortaya bir EXE veya çalıştırılabilir başka bir dosya çıkartmaya gerek olmadığı anlamına gelir. Fakat PHP Script'lerinizi çalıştırabilmek için bu dili bilen bir programa ihtiyacınız vardır. Bu programın tek başına (komut istemci penceresinde veya terminal ekranında) çalışması mümkün olduğu gibi, Web Server tarafından da çalıştırılabilir olması gerekir. Başka bir deyişle Web Sunucu programının PHP anlar hale getirilmesini sağlamak zorundayız.

    PHP yorumcusu, bugün Zend-çekirdeği adı verilen bir Scripting teknolojine dayalı olarak, Zeev Suraski ile Andi Gutmans tarafından sıfırdan, tamamen yeniden yazılmış bulunuyor. Zend, tıpkı Windows Script Host ve mesela Visual Basic for Applications (VBA) gibi, işletim sistemine kendisi ile uyumlu Script dilleriyle yazılmış programları çalıştırma imkanı kazandıran bir teknolojidir (Zend konusunda ek bilgiyi Internet'te Zend - The PHP Company - Zend.com adresinde bulabilirsiniz.) Bugün bu dilin resmî adı "PHP: Hypertext Preprocessor" (Hiper-metin ön-işlemcisi) olarak değiştirildi, ve çeşitli Web Server'ların PHP dili anlaması için gerekli yorumlayıcıları yeniden üretlidi. 20 Ocak 200'de İsrail'de PHP'nin ilk uluslararası konferansı yapıldı ve 4'ncü sürümünün betası ortaya kondu.

    Peki ama PHP nedir?

    PHP ile artık oturup her türlü işlevselliği sahip programlar yazabilirsiniz; yani PHP başlı başına uygulama alanları bulabilecek düzeye ulaşmıştır. Başka bir deyişle PHP ile oyun programından tutun veritabanı yönetimine kadar hemen her türlü programı yazabilirsiniz. Bizi bu kitapçıkta ilgilendiren tarafıyla PHP, Web Sunucu'ya bir takım işler yaptırmak için program yazma dilidir. Tıpkı CGI/Perl veya ASP ya da ColdFusion, Java (Javascript değil!) gibi! PHP kodları, oluşturacağımız HTML sayfalarında HTML etiketlerinin arasında kendi özel ayracı içinde yazılır:

    <html>

    <?PHP

    echo ("Merhaba Dünya!");

    ?>

    </html>

    İster kişisel bilgisayarımızda, ister gerçek Internet ortamında olsun, bir Web Sunucu, ziyaretçinin (Internet istemci programının, Browser'ın) talep ettiği dosya adının uzatması olarak ".PHP," ".PHP2," ".PHP3," veya ".PHP4" görünce, kendine kendine, "Yine bana iş çıktı!" diye düşünür! Çünkü Web Server, uzatması ".htm" veya ".html" olan bir dosyayı, kendi sabit disklerinden birinde bulur ve zahmetsizce, ziyaretçinin bilgisayarına gönderir. Fakat, ".asp," .pl," ".cfm" gibi, ".PHP" uzatması, Web Sunucu'ya bu sayfayı olduğu gibi, alıp ziyaretçinin Browser'ına göndermek yerine, önce PHP yorumlayıcıyı çağırarak, ona teslim etmesi gerektiğini bildirir. PHP yorumlayıcısı (yani Windows ortamında PHP.exe veya 4'ncü sürümle gelen PHP4isapi.dll, Unix ve türevlerinde çalıştırılabilir PHP dosyası), kendisine teslim edilen bu belgede önce "<?PHP" ve "?>" ayraçları arasındaki PHP kodlarını seçerek alır ve gereği ne ise onu yapar. Bu ayraçların içinde kalan kodlar, bizim yapılmasını istediğimiz işlemin komutlarıdır. HTML ile yetinmeyip, PHP kullanmamızın sebebi, bu komutların HTML'in yapayacağı şeyleri yapmasıdır.

    HTML'in yapamayacağı şeylerin başında, Web Sunucusu'nda yapılacak işler vardır. Sözgelimi HTML etiketlerini kullanarak, Web Sunucusu'ndaki bir veritabanı dosyasını açıp, içindeki verileri okuyamayız. HTML yoluyla Web Sunucusu'nun sabit disklerindeki düz yazı dosyalarını da okuyamayız ve bu disklere dosya yazamayız. HTML etiketleri ile Web ziyaretçimizden bilgi edinebilir ve bunları Sunucu'ya yollayabiliriz; ama o kadar! Bu bilgileri işe yarar şekle sokmak için bize Server'da çalışan bir program gerekir. Server'da çalışan program, EXE ve DLL veya JSP (Java Server Pages) gibi bir "gerçek program"; veya Perl, ASP ve PHP gibi Script diliyle yazılmış bir program olabilir. (Gerçek programları yazanlar, tabiî, sizin Script diliyle yazılmış programlara "program" demenize çok kızarlar! Ama bu Script pogramlarının program olmasını hiç engellemez.)

    Ne diyorduk? Web Sunucu, ".PHP" uzatmasını görünce telaşa kapılır, bu dosyayı PHP yorumlayıcısına verir ve o da "<?PHP" ve "?>" ayraçları içindeki kodları icra eder, demiştik. Bu icraatın sonunda ortaya çıkan ürün eğer ziyaretçiye gönderilecekse, HTML etiketleri içinde gönderilir; yani ziyaretçi asla PHP kodlarını göremez. Kimi zaman PHP programımızın çalışması sonucu ortaya ziyaretçiye gönderilecek bir ürün çıkmaz; elde edilen sonuç ya başka bir programa (örneğin elektronik ileti gönderen bir Sendmail progamına) hammadde olarak verilir, ya da Server'da sabit diske yazılır. Fakat her durumda, Web ziyaretçimiz bizim PHP kodlarımızı göremez; bu Web sayfalarımızda PHP kodu kullanmamız halinde, sayfalarımızın Browser tarafından tanınması veya tanınmaması gibi bir durumun ortaya çıkmaması demektir. Ziyaretçi ne tür Browser kullanırsa kullansın, kendisine Sunucu'dan daima saf HTML kodu geleceği için, sayfalarımızı rahatça görebilecektir. Tabiî bir nokta var: Sayfalarımızda herhangi bir Browser'ın arızalı yorumladığı veya hiç yorumlayamadığı HTML etiketleri bulunabilir; ya da söz gelimi ziyaretçiye giden HTML'in içinde Browser'da çalıştırılacak olan başka Script kodları bulunabilir; ve Browser bu kodları anlamayabilir. Örneğin, HTML sayfanızda VBScript kodları kullanmış iseniz, Netscape ile sitenize bağlanmış olan kişiler bu kodun oluşturmasını istediğiniz etkiyi göremeyeceklerdir; çünkü Netscape VBScript anlamaz! PHP ile yazacağınız Web programlarının (eski deyimiyle "sayfaların") oluşturacağı HTML belgesinin Browser türleri ve sürümleri ile uyarlılığını sağlamak yine Web programcısı olarak sizin sorumluluğunuzdadır.

    Özetlersek, PHP bir CGI programlama dilidir; bu dille, Web Sunucusu ile Web ziyaretçisi arasındaki buluşma noktası olan CGI'da bilgi alışverişi yapılabilir; Sunucu'da bulunan başka programlar çalıştırılabilir ve böylece Web sayfalarımıza HTML'in sınırlamalarının ötesinde hareket ve ziyaretçi ile etkileşme olanağı kazandırılabilir.

    Sanırım iyi bir Web programcısı olarak şu anda ekrana "Merhaba Dünya!" yazdırmak için sabırsızlanıyorsunuz. Ama bunun için, PHP sayfanızı ya PHP-uyumlu bir Web Sunucusu'ndaki Web sitenize yüklemek, ya da kişisel bilgisayarınızdaki kişişel Web Sunucusu'na PHP öğretmek zorundasınız. Bu ikinci yöntemi kuvvetle tavsiye ederim; çünkü yazacağınız PHP programlarını gerçek Internet Sunucusunda sınamak, bazen arzu edilmeyen durumlara yol açabilir. Oysa kişinin bu denemeleri, evinde ve işyerinde kendi bilgisayarında yapması, çoğu zaman daha az başağrısı ve gözyaşına yol açar! En azından, PHP hatalarınızı ve gözyaşlarınızı sizden başka gören olmaz!
    PHP ve Veritabanı

    Kişisel bilgisayarınızdaki kişisel Web sunucusuna PHP öğretme işlemine geçmeden önce, hemen hemen PHP'nin ikiz kardeşi sayılan MySQL'den ve onun rakibi PostgreSQL'den kısaca söz edelim.

    PHP'nin varlık sebeplerinin başında, ticarî Unix ve Microsoft Windows işletim sistemlerinden ayrı, ticarî olmayan Açık Sistem ortamlarında çalışan bir Script dili ile bu dille kullanılabilecek yine Açık Sistem ürünü bir veritabanı erişim ve yönetim aracına sahip olmak gelir. Perl, gerçi PHP'den çok önce Açık Sistem ürünü olarak, isteyen Web Programcısı'nın ücretsiz edineceği bir CGI programlama dili olarak Web'in ilk gününden beri Web Programcısının emrinde idi. Ama Perl, metin dosyalarından yazı çekmek ve bunları biçimlendirerek rapor haline getirmek amacıyla geliştirilen bir dil olduğu için, özellikle veritabanına dayalı işlemlerde programcıya çok güçlük çıkartıyordu. ASP ise (ASP desteği sağlayan ve ücretsiz Web sitesi veren firmaların giderek artmasına ve veritabanı konusunda hem kolaylık, hem de büyük bir etkinlik sağlamasına rağmen) çoğunlukla ücretli Web sitesi aldığımız ticarî amaçlı evsahibi (Hosting) firmalarının sağladığı bir teknoloji olarak görüldü. PHP, tasarımcılarının MySQL ve PostgreSQL teknolojilerini geliştiren kurum ve firmalarla yaptığı yakın işbirliği sonucu ikinci sürümünden itibaren veri-yönlendirmeli Web uygulaması alanında önemli bir araç olarak belirdi. Dolayısıyla, PHP kurulumu dendiği zaman, kendiliğinden, MySQL kurulumu da kastedilmiş olur. Şimdi PostgreSQL da ekleyebiliriz.

    PHP, bir dildir; MySQL ve PostgreSQL ise bir demet sürücüdür. PHP ile, Web Server'a sayfanızı Internet ziyaretçisine göndermeden önce bir takım komutları icra etmesini, bir takım veri dosyalarını açıp içindeki bilgileri alıp bunları HTML kodlarıyla bezeyip, Browser'a bildiğimiz klasik HTML sayfası olarak göndermesi talimatını veririz. MySQL ve PostgreSQL ise, Windows sistemlerinde Denetim Masası'nda gördüğünüz ODBC Veri Kaynağı Yönetmeni adlı araç gibi, bir vertabanı sunucusu, yani Database Server pprogramlarıdır. Yakın zamana kadar bu iki veritabanı yönetim aracı arasında fazla bir çekişme yoktu. Ancak şimdi özellikle Linux kullanıcıları topluluklarında iki program arasında verimlilik testleri yapılıyor; hangisinin daha iyi olduğnuna ilişkin yoğun bir tartışma sürüyor. PHPBuilder.com uzmanları, yaptıkları bir çok denemede, MySQL'in daha hızlı ve daha etkin çalıştıkları sonucuna varıyorlar. (Bu konuda daha geniş bilgi edinmek için Internet'te www://PHPbuilder.com/columns/tim20000705.PHP3 adresine bakabilirsiniz.)

    MySQL, bir kullanıcı lisansı 200 Dolar olan ticarî bir program iken 2000 yılı ortalarında GPL (GNU General Public License/GNU Kamusal Lisans) uygulamasına geçmiş ve ücretsiz dağtılır hale gelmiş bulunuyor. Buna göre MySQL'i bir ticarî uygulamanın içinde motor olarak kullanacaksanız üreteci firmaya lisans ücreti ödemeniz gerekir; bunun dışındaki uygulamalar için programı Internet'ten indirerek kullanabilirsiniz. PHP için MySQL'e gerek yoktur. PHP, bir NT veya Win9x tabanlı Web Server'da çalıştırılıyorsa, Microsoft'un ODBC sürücüleri ile çalışabilir; ve ODBC'nin okuduğu bütün veritabanlarından veri çekebilir. (ODBC'nin Unix-Linux sürümü de vardır.) Ayrıca PHP için Adabas, dBase, Empress, FilePro, Informix, InterBase, mSQL, Oracle, Solid, Sybase, Velocis ve bir çok Unix veritabanı yöneticisi için geliştirilmiş add-on (sonradan eklenen) modüller vardır. PHP, bir çok LDAP istemci programı için yazılmış API'lere de sahiptir. PHP ile IMAP, SMTP gibi Internet elektronik mektup protokollerini kullanmak da mümkündür.

    Biz bu kitapçıkta örneklerimizde ve uygulamalarımızıda MySQ'den yararlanacağız. PHP-MySQL ikilisini kişisel bilgisayarımıza kurmak için önce gerekli programları Internet'ten indirmemiz gerekir. Bunun için şu adreslerden yararlanabilirsiniz:

    PHP: Manual Quick Reference

    MySQL :: MySQL Downloads



    PHP ve Web Sunucusu

    Bizim açımızdan PHP, bir Web sunucu programıdır; kurulacağı sistemdeki Web sunucusu ile uyumlu olması gerekir. 4'ncü sürümü itibariyle, PHP bütün Unix-türevi sistemler (örneğin Linux) ve Microsoft Windows sistemleri ile uyumludur. Birlikte çalışabileceği Web sunucu programları arasında Apache, IIS, FHTTP, Omni HTTPd, Xitami ve Windows 95/98 için PWS (Personal Web Server) vardır. Gerçek Internet ortamında sunucu programlara PHP yeteneği kazandırma işlemi, Web Pnogramcısı olarak bizi ilgilendirmez; bizim için Internet sitemize evsahipliği yapan Hosting firmasının PHP desteği verip vermediğini bilmek yeter. Fakat tasarımlarımızı sınayabilmek için kendi bilgisayarımıza bir kişisel Web Server kurmak ve bu programı PHP-uyumlu hale getirmek gerekir. Burada sadece iki örnek ele alacağız: Linux için Apache sunucu programı ve MS-Windows için PWS. Bu iki programdan hangisi sizin sisteminize uygunsa onu kendi bilgisayarınıza kuracağınızı varsayarak, şimdi PHP ve MySQL kurulumu ile uğraşabiliriz.
    Cehennem olsa gelen, göğsümüzde söndürürüz; Bu yol ki Hak yoludur, dönmek bilmeyiz, yürürüz!
    Bacımın iffeti batmakta rezilin gözüne; Acırım tükrüğe billahi ! tükürsem yüzüne.
    {Mehmet Akif ERSOY}

  2. #2

    Üyelik Tarihi
    Feb 2008
    Mesajlar
    608

    Standart

    Değişkenler

    Programcılıkta işlemlerimizi değişkenlerle yaparız. Değişkeni bir kap gibi düşünebilirsiniz. Sözgelimi "Gün," değişkenin adı ise bu değişkenin değeri Pazar, Pazartesi, Salı, vd., olabilir. Her değişken, türüne göre, ya bir ya da daha fazla değer tutar. Adından da anlaşılacağı gibi değişkenin değeri değişir! Bu değişikliği biz yapabiliriz; programın kendisi yapabilir.


    PHP'de de, bir çok başka bilgisayar programlama dilinde olduğu gibi değişkenlerin içine bir değer konmadan önce tanımlanması mümkündür; fakat gerekli değildir. Değişkenleri adının önüne $ işareti koyarak tanımlarız:

    $adi;

    $soyadi;

    $123;

    $sevdigiRenk;

    Değişkenler, harf, rakam veya alt çizgi (_) ile başlayabilirler; bu karakterleri içerebilirler; ama içinde boşluk veya diğer işaretler bulunamaz. PHP değişkenleri her türlü değişken tutabilirler: bir değişkenin adının yazılış şekli onun tutabileceği değerin niteliğini belirlemez. Dolayısıyla, "$adi" değişkenin değeri "Reşit" da olabilir, "1255" de olabilir.

    PHP'de genellikle değişkenleri değerini atayarak belirleriz:

    $adi = "Reşit";

    $soyadi = "Gülen";

    $123 = 123;

    $sevdigiRenk = "yeşil";

    Değişkenler, kullanıldıkları işleme, taşıdıkları değeri verirler:

    print $adi;

    komutu, eğer değeri "Reşit" ise "Browser penceresine "Reşit" kelimesini yazdırır.

    PHP'de özel bir değişkene değişken adı olarak kullanılacak değerleri de atayabiliriz:

    $adi = "Reşit";

    $degisken = "adi";

    print $$degisken;

    Burada Browser penceresine yine "Reşit" kelimesi yazılacaktır; çünkü PHP $degisken adlı değişkenin "adi" adlı değişkeni tuttuğunu bilecek ve iki Dolar işaretini görünce, $degisken'in değerini değil, onun tuttuğu değişkenin değerini yazacaktır. Bu, size şu anda karışık görünebilir. Daha sonra döngüleri gördüğümüzde bu tekniği bir satırlık kod ile yüzlerce değeri yazdırmakta kullanacağız. Bu teknik şöyle de kullanılabilir:

    $degisken = "adi";

    $$degisken = "Reşit";

    print "$adi";

    print $$degisken;

    print "${$degisken}";

    print "${'adi'}";

    Buradaki dört "print" komutu da Browser'a "Reşit" kelimesini yazdıracaktır.

    PHP'de bir değişkenin tuttuğu değer, bir başka değişkene atanabilir. Bu ya duragan, ya da dinamik olarak yapılır. Duragan yöntemde:

    $birinci_degisken = "Nurcan";

    $ikinci_degisken = $birinci_degisken;

    $birinci_degisken = "Tülay";

    print $ikinci_degisken;

    Buradaki "print" komutu Browser penceresine "Reşit" kelimesini yazdıracaktır. İki değişken arasındaki değer alış-verişi birinci değişkenin tuttuğu değeri değiştirmeden önce olduğu için, ikinci değişken birinci değişkenin ilk değerini almış oldu. Fakat kimi zaman iki değişken arasındaki değer alış-verişi sürekli (dinamik) olsun isteriz. PHP, buna, ilk atama sırasında & işareti kullanırsak izin verir:

    $birinci_degisken = "Nurcan";

    $ikinci_degisken = &$birinci_degisken;

    $birinci_degisken = "Tülay";

    print $ikinci_degisken;

    Buradaki "print" komutu ise Browser penceresine "Tülay" kelimesini yazdıracaktır. Çünkü iki değişken arasındaki değer alış-verişi birinci değişkenin tuttuğu değeri değiştirmeden önce halde, ikinci değişkene birinci değişkenin değerini dinamik olarak atamış olduk. Atama işlemi sırasında & işareti kullandığımız için, birinci değişkenin değeri değiştiğinde ikinci değişkenin de değeri değişecektir.


    Veri Türleri

    PHP, değişkenlere, tuttukları değere göre farklı bellek alanı tahsis eder; bu bakımdan verilerimizin türü etkin bir programcılık açısından önem taşır. Ayrıca PHP, diğer bütün programlama dilleri gibi belirli veri türleri ile belirli işlemleri yapar veya yapamaz. Örneğin, ancak iki sayı arasında aritmedik toplama yapılabilir. İki metin tutan değişken aritmetik olarak toplanamaz; ancak içerdikleri değerler ardarda eklenebilir. Ne var ki, PHP sizin aritmetik toplama mı, yoksa ardarda ekleme mi yapmak istediğinizi bilmek durumunda değildir. (PHP'ye 'muazzam dil' dedik; içinde yapay zekâ var demedik!) Dolayısyla değerleri 5 ile 6 olan iki değişkeni topladığınız zaman ortaya 11 yerine 56 çıkarsa, kabahati PHP'de değil, değişkenlere veri atayan kişide (büyük bir ihtimalle kendinizde) aramalısınız.

    PHP açısından dünyada altı tür değer vardır:

    Tamsayı (Integer): 5,124, 9834 gibi

    Çift (Double): 3,567 gibi

    Alfanümerik (String): "Reşit" gibi

    Mantıksal (Boolean): doğru (true)/yanlış (false) gibi

    Nesne (Object)

    Dizi (Array)

    Bazı uzmanlara göre, gerçekte PHP'de mantıksal (boolean) değişken türü yoktur. B kanının sebebi, PHP'nin true (doğru) ya da false (yanlış) olarak atadığımız değerleri 1 ve boş/null değerlere çevirmesi, mantıksal olarak sorgulandığında 0 dışındaki tam ve ondalık değişkenleri TRUE, 0'ı FALSE sayması, ve boş alfanümerik değişkenleri FALSE, dolu alfanümerik değişkenleri ise TRUE olarak değerlendirmesidir. Ancak daha sonra gereceğimiz gibi PHP, Mantıksal/Boolean adında bir değişken değiştirme fonksiyonuna sahiptir ve bu tür değişkenlerin türü sorulduğunda "boolean" karşılığını verir.

    Tür Değiştirme

    Değişkenlere atadığımız değerlerinin türlerini genellikle biliriz; ama yüzlerce değişkenle uğraştığımız bir Web programında değişken türünü unutmak çok kolaydır. Kimi zaman da değişkenlere program yoluyla değer atarız; başka bir deyişle programımız bazı değişkenleri kendisi oluşturabilir, ve bunlara kendisi değer atayabilir. Bu tür program yoluyla atanan değerlerin de türünde kuşkuya kapıldığımız anlar olabilir. Bir değişkenin değerinin türü hakkında kuşkunuz varsa, en emin yol bunu PHP'nin kendisine sormaktır. Bu sorgulamayı gettype() fonksiyonu ile yaparız.

    Fonksiyon

    PHP'nin gettype() ve print() gibi, kendi içinde bulunan kullanılmaya hazır bir çok fonksiyonu vardır. Daha sonra kendi fonksiyonlarımızı yazmanın yollarını da göreceğiz. Programcılık dilinde ister dile ait olsun, ister kendimiz yazmış olalım, bir fonksiyonu kullanmaya "fonksiyon çağırma" denir. Fonksiyonlar da fonksiyon çağırabilirler. Çağrılan bir fonksiyon ya kendisinden beklenen işi yapar, ya da kendisini çağıran işleme veya fonksiyonu bir değer sunar. Buna fonksiyondan dönen değer denir.
    Şimdi, bir PHP programı yazalım, bir takım değişkenlere değerler atayalım ve bunların türlerini PHP'ye soralım. Bir düzyazı programı ile şu metni yazın ve turler.php adıyla kaydedin:

    <HTML>

    <HEAD>

    <TITLE>PHP'de Degisken Turleri</TITLE>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

    </HEAD>

    <BODY>

    <B>

    <H2>

    <?php

    $sayi = 5;

    print("Birinci değişkenin adı: \$sayi<br>");

    print("Değeri : ");

    print "$sayi<br>";

    print("Türü : ");

    print gettype( $sayi ) ; //tamsayi/integer

    print "<br>";

    print "<br>";

    $alfanumerik = "Reşit";

    print "İkinci değişkenin adı: \$alfanumerik<br>";

    print "Değeri : ";

    print "$alfanumerik<br>";

    print("Türü : ");

    print gettype( $alfanumerik ) ; //alfanümerik/string

    print "<br>";

    print "<br>";

    $ondalik = 5.1234;

    print "Üçüncü değişkenin adı: \$ondalik<br>";

    print "Değeri : ";

    print "$ondalik<br>";

    print("Türü : ");

    print gettype( $ondalik ) ; //çift,ondalık/double

    print "<br>";

    print "<br>";

    $mantiksal = true;

    print "Üçüncü değişkenin adı: \$mantiksal<br>";

    print "Değeri : ";

    print "$mantiksal<br>";

    print("Türü : ");

    print gettype( $mantiksal ) ; //mantıksal/boolean

    print "<br>";

    print "<br>";

    ?>

    </H2>

    </B>

    </BODY>

    </HTML>

    Bu programı çalıştığımızda karşımıza şöyle bir görüntünün gelmesi gerekir:
    Burada mantıksal (boolean) değer olarak doğru anlamına true değeri atadığımız halde, PHP'nin bu değişkenin değeri olarak 1'i gösterdiğine dikkat edin. PHP'de bir fonksiyon, elde ettiği değer doğru ise sonuç olarak 1 değerini verir. (Yanlış/false değerinin neye çevrildiğini bulabilir misiniz?)
    Cehennem olsa gelen, göğsümüzde söndürürüz; Bu yol ki Hak yoludur, dönmek bilmeyiz, yürürüz!
    Bacımın iffeti batmakta rezilin gözüne; Acırım tükrüğe billahi ! tükürsem yüzüne.
    {Mehmet Akif ERSOY}

  3. #3

    Üyelik Tarihi
    Feb 2008
    Mesajlar
    608

    Standart

    Escape

    turler.php dosyasını yazdıysanız, şu satırdaki, ters-bölü işareti dikkatinizden kaçmamış olmalı:

    print "İkinci değişkenin adı: \$alfanumerik<br>";

    Daha önce gördük ki, tek veya çift tırnak içine de alsak, PHP, bir değişken adını gördüğü zaman onun yerine o değişkenin tuttuğu değeri yazar. PHP bunu, değişken adının başındaki $ görerek yaparak. $ işareti gibi PHP için özel anlamı olan işaretlerin anlamlandırılmasını önlemek ve bu işaretleri düz metin saymasını sağlamak için bu işaretlerin önüne ters-bölü işareti koyarız. Buna o karakteri kurtarma veya ESCaping denir.

    PHP'nin anlamlı işaretleri ve bunların ESCape-yazılışı şöyledir:

    \' Tek tırnak

    \" Çift tırnak

    \\ Ters-bölü

    \$ Dolar işareti

    \n Yeni Satır (New Line)

    \r Satır Başı (Return)

    \t Sekme (Tab) karakteri

    Kimi zaman bir değişkene atadığımız değerin türünü değiştirmek gerekir. Bunu settype() fonksiyonu ile yaparız. Elimizde böyle bir imkan var diye, bir değişkenin alfanümerik (String) olan değerini sayıya çevirebileceğini sanmayın. PHP buna çok kızar! Şu örneği de tur_degistir.php adıyla kaydedelim:

    <HTML>

    <HEAD>

    <TITLE>PHP'de Degisken Turleri</TITLE>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

    </HEAD>

    <BODY>

    <B>

    <H2>

    <?php

    $degisken = 5.67890;

    print("Değişkenin değeri : ");

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; //çift,ondalık/double

    print "<br>";

    print "<br>";

    print "İlk değiştirme işlemi: Alfanümerik/String:<br>";

    settype( $degisken, string ); //alfanümerik/string

    print "Değeri : ";

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; //alfanümerik/string

    print "<br>";

    print "<br>";

    print "İkinci değiştirme işlemi: Tamsayı/Integer:<br>";

    settype( $degisken, integer ); //Tamsayı/Integer

    print "Değeri : ";

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; //Tamsayı/Integer

    print "<br>";

    print "<br>";

    print "Üçüncü değiştirme işlemi: Ondalık/Double:<br>";

    settype( $degisken, double ); //çift,ondalık/double

    print "Değeri : ";

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; //çift,ondalık/double

    print "<br>";

    print "<br>";

    print "Dördüncü değiştirme işlemi: Mantıksal/Boolean:<br>";

    settype( $degisken, boolean ); // Mantıksal/Boolean

    print "Değeri : ";

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; // Mantıksal/Boolean

    print "<br>";

    print "<br>";

    ?>

    </H2>

    </B>

    </BODY>

    </HTML>

    Bu programı çalıştırdığımızda, ilk atadığımız değerin ondalık/double olarak belirlendiğine dikkat edin. Bu değerin türünü alfanümerik/string olarak değiştirdiğimizde değişmediğini görüyoruz. Fakat tamsayı/integer'a çevirdiğimizde PHP değerin tamsayı bölümünü alıyor; ondalık-kesir bölümünü atıyor. Nitekim daha sonra değişkerin türünü yeniden ondalık yaptığımız halde, atılan bu bölüm geri gelmiyor. Son olarak değişkeni mantıksal ifade olarak değiştirdiğimizde, değerin doğru/true olduğunu anlıyoruz; değer olarak bize 1 dönüyor. PHP, sıfır dışındaki tüm değerleri doğru/true'ya çevirir; sıfır'ı ise yanlış/false olarak atar ve boş/null değer verir.
    Şu anda PHP'yi tam bilemediğimiz için nerede kullanılır kestiremiyoruz, ama diyelim ki burada olduğu gibi, değişkeni bir daha düzelmeyecek şekilde değişikliğe uğratmak istemeyebiliriz; fakat yine de değerinin türünü değiştirmek isteyebiliriz. Bunu da nerede kullanabiliriz, şu anda bilmiyoruz. Ama diyelim ki, böyle bir işlem yapmaya ihtiyacımız oldu! Hatırlıyor musunuz, biraz önce özel bir şekilde bir değişkene başka bir değişkenin adını değer olarak vererek, aslında bu değişkenin ilk değişkenin değerini almasını sağlamıştık. Burada da aynı tekniği kullanabiliriz. Bu kodu da tur_kopyala.php adıyla kaydedin:

    <HTML>

    <HEAD>

    <TITLE>PHP'de Degisken Turleri Kopyalama (Casting)</TITLE>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-9">

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">

    </HEAD>

    <BODY>

    <B>

    <H2>

    <?php

    $degisken = 3.1418;

    print("Değişkenin değeri : ");

    print "$degisken<br>";

    print("Türü : ");

    print gettype( $degisken ) ; //çift,ondalık/double

    print "<br>";

    print "<br>";

    print "İlk kopyalama işlemi: Alfanümerik/String:<br>";

    $kopya_degisken = ( string ) $degisken; //alfanümerik/string

    print "Değeri : ";

    print "$kopya_degisken<br>";

    print("Türü : ");

    print gettype( $kopya_degisken ) ; //alfanümerik/string

    print "<br>";

    print "<br>";

    print "İkinci kopyalama işlemi: Tamsayı/Integer:<br>";

    $kopya_degisken = ( integer ) $degisken; //Tamsayı/Integer

    print "Değeri : ";

    print "$kopya_degisken<br>";

    print("Türü : ");

    print gettype( $kopya_degisken ) ; //Tamsayı/Integer

    print "<br>";

    print "<br>";

    print "Üçüncü değiştirme işlemi: Ondalık/Double:<br>";

    $kopya_degisken = ( double ) $degisken; //çift,ondalık/double

    print "Değeri : ";

    print "$kopya_degisken<br>";

    print("Türü : ");

    print gettype( $kopya_degisken ) ; //çift,ondalık/double

    print "<br>";

    print "<br>";

    print "Dördüncü kopyalama işlemi: Mantıksal/Boolean:<br>";

    $kopya_degisken = ( boolean ) $degisken; // Mantıksal/Boolean

    print "Değeri : ";

    print "$kopya_degisken<br>";

    print("Türü : ");

    print gettype( $kopya_degisken ) ; // Mantıksal/Boolean

    print "<br>";

    print "<br>";

    ?>

    </H2>

    </B>

    </BODY>

    </HTML>

    Bu programın can alıcı noktası örneğin "$kopya_degisken = ( boolean ) $degisken;" şeklindeki komut; burada $kopya_degisken adlı değişkene $degisken adlı değişkenin değerini (eşittir işareti ile) kazandırırken, arada yeni değişkenin kazanmasını istediğimiz türün adını parantez içinde yazıyoruz. Burada gerçekte, $degisken adlı değişkenin değerine hiç bir şey olmuyor. Bu programı çalıştırırsanız, ilk değerin ontalık kısmının önceki örnekte olduğu gibi değişim işlemi sonunda tamamen yok olmadığını görebilirsiniz.
    $degisken adlı değişkenin değeri değişmeden durduğu için üçüncü adımda yıptığımız ondalık tür olarak kopyalama sonucu yeni değişkenin değeri yine kesiri ile karşımıza çıkıyor.

    Dört yararlı fonksiyon

    PHP'de değişken değer türü değiştirmekte kullanabileceğimiz kullanılmaya hazır fonksiyon vardır. ilerde döngüleri ele aldığımızda daha çok anlam kazanacak olan bu değişkenleri şimdilik bir kenara kaydedin:

    isset() ve unset()

    PHP, bir değişken tanımlandığı anda, sanki içinde değer varmış gibi, bilgisayarın belleğinde yer ayırır. Bu bazen bilgisayarın kıt kaynaklarını zorlayabilir. isset() fnksiyonu, PHP'nin bir değişkenin içinde değer bulunup bulunmadığını sınamasını sağlar. unset() ise varolan bir değişkeni yok eder. Bu iki fonksiyonu birlikte kullanabiliriz ve boş değişkenleri yok ederek, bilgisayarın belliğinde yer açabiliriz:

    if (isset($bir_degisken)) {

    print( $bir_degisken );

    }

    else {

    unset($bir_degisken);

    }

    Bu kod parçası, $bir_degisken isimli dğişkenin içi boş değişse, içeriğini görüntüleyecek, içi boş ise varlığına son verecektir.

    empty()

    isset() fonksiyonun tersi işleve sahiptir; bir değişkene değer atanmamışsa, veya değeri sıfır veya boş alfanümerik (null string) ise, doğru (True) değeri verir.

    $bir_degisken = 123;

    echo empty($bir_degisken);

    $bir_degisken = "";

    echo empty($bir_degisken);

    Bu program parçası Browser penceresine sadece empty() fonksiyonun doğru sonuç verdiği birinci echo() deyiminde 1 yazdıracaktır.

    is_string(),is_integer(),is_double(),

    Sınadıkları değişkenin aradıkları türden değer içermesi halinde doğru 'True) sonuç verirler.

    <?php

    $a = 6.567;

    if (is_double($a)) {

    print ("A Double'dır<br>");

    }

    $b = "Reşit";

    if (is_double($a)) {

    print ("B String'dir<br>");

    }

    $c = 6;

    if (is_int($c)) {

    print ("C Integer'dır<br>");

    }

    ?>

    Bu kod, Browser penceresine "A double'dır, B String'dir, C Integer'dır" yazdıracaktır. PHP'de bu fonksiyonlara benzeyen fakat başka tür değer arayan şu fonksiyonlar da vardır: is_array(), is_object.

    intval(), doubleval(), doubleval()

    Bir değişkenin değerinin türünü başka bir türe çevirmeye yararlar. intval(), ortaya çıkartacağı tamsayı değişkenin 10 tabanlı (decimal) veya 16 tabanlı (hexadecimal) olmasını sağlayan ikinci bir argüman alabilir:

    <?php

    $a = "123ABC";

    $b = inval($a, 16)

    print ($b);

    ?>

    Bu program Browser penceresine, 123'ün hexadecimal ifadesi olan "1194666" yazdıracaktır.

    İşlemciler (Operatörler)

    Yukarıdaki örnekleri birlikte yaptıysak, = işaretini bol bol kullandık ve böylece PHP'nin bir çok operatöründen biriyle tanıştık. Buna PHP dilinde "atama operatörü" denir. Bu işlemci sadece yukarıda kullandığımız gibi, bir değişkenin bir değere eşitliğini ilan etmek amacıyla kullanılmaz. Örneğin:

    print ( $sayi = 123 ) ;

    ifadesinde olduğu gibi, bir fonksiyonun içinde de hem atama işlemi yapılabilir; hem de işlem yürütülür. PHP'nin aritmetik, birleşik-atama, birleştirme, karşılaştırma ve mantıksal sınama operatörleri vardır.

    Aritmetik işlemciler:

    + Toplama 6+5 = 11

    - Çıkartma 6-5 = 1

    / Bölme 6/5 = 1.2

    * Çarpma 6*5 = 30

    % Kalan (Modulus) 6%5 = 1

    Aritmetik işlemleri gerçek sayılarla yaptığımız gibi, tuttuğu değer sayı olan değişkenlerle de yapabiliriz.

    Daha önce, PHP'de değişken tanımlar ve bunlara değer atarken sayı olan değişkenleri tırnak işareti kullanmadan, alfanümerik değişkenleri ise tırnak içinde yazdığımızı hatırlayacaksınız. Bu, geleneksel hale gelmiş olan bir programcılık alışkanlığıdır. PHP, tırnak kullanmasanız da bir değişkenin sayı olup olmadığını anlar; daha sonra bu değişkenlerle aritmetik işlem yapabilir. PHP ayrıca rakamla başlayan alfanümerik değişkenleri sayı olarak kullanmaya kalktığınızda, bu değerin başındaki bütün rakamları sayı olarak kabul eder. PHP açısından harf veya işaretle başlayan alfanümerik değişkenlerin sayı olarak değeri sıfırdır. Örnek:

    $a = 6;

    $b = "22/A"

    print ($a + $b)

    sonuç olarak 28'i verecektir; veya

    $a = 6;

    $b = "A/22"

    print ($a + $b)

    sonuç olarak 6 çıkacaktır. Bu küçük deneyi yaparsanız, PHP ile program yazarken hangi değişkenin ne sonuç vermesi gerektiğini dikkatle düşünmek zorunda olduğunuzu görürsünüz. Bir kişinin geliri ile adresini toplamak, programcı olarak arzu ettiğiniz bir işlem olmayabilir!

    Bununla birlikte elimizde bir kişinin adı ve soyadı ayrı değişkenler halinde ise, bunları birbirine ekleyerek (concatenation) ortaya yeni bir alfanümerik değişken çıkartabiliriz:

    <?php

    $adi = "Reşit";

    $soyadi = "Muhtar";

    $adi_soyadi = $adi . " " . $soyadi;

    print ("<br>");

    print ($adi_soyadi);

    print ($adi . "'nın soyadı " . $soyadi . "'dir.")

    ?>

    Bu örnekte, sadece ekleme yoluyla yeni bir değişken oluşturmakla kalmıyoruz; fakat alfanümerik değişkenleri, başka metinlerle de birbirine ekleyebildiğimizi görüyoruz. Bu işlemi nokta işaretiyle (.) yapıyoruz. Bu işlemciyle sadece değişkenlerin değerlerini değil fakat metinleri de birbirine ekleyebiliriz:

    <?php

    print ("İyileri iyikleri ile alkışla; " . "..." . "ve sen soluklarında daima Mesîh ol..! ")

    ?>

    PHP'nin atama işlemcisinin eşittir (=) işareti olduğunu hatırlıyorsunuz birleşik-atama (combined-assignment) işlemcileri, bu işarete diğer aritmetik işlemciler eklenerek oluşturulur.

    İşlemci Örnek Anlamı

    += $a += 5 $a = $a + 5

    -= $a -= 5 $a = $a - 5

    /= $a /=5 $a = $a / 5

    *= $a *= 5 $a = $a * 5

    %= $a %= 5 $a = $a % 5

    .= $a .= "metin" $a = $a" metin"

    Bu işlemi zihnimizde, "A değişkeninin mevcut değerine 5 ekle, çıkan sonucu A değişkenin yeni değeri yap!" şeklinde canlandırabiliriz.
    Cehennem olsa gelen, göğsümüzde söndürürüz; Bu yol ki Hak yoludur, dönmek bilmeyiz, yürürüz!
    Bacımın iffeti batmakta rezilin gözüne; Acırım tükrüğe billahi ! tükürsem yüzüne.
    {Mehmet Akif ERSOY}

Konu Bilgisi

Uye Bu Konuya Bakiyor

Suan 1 Uye bu konuya bakiyor. (0 Uye ve 1 Ziyaretci)

Eklenmis Olan Tag'lar

Bookmarks

Yetkileriniz

  • Yeni Konu Acamazsin
  • Konuya Cevap Yazamazsin
  • Konuya Eklenti Ekleyemezsin
  • Mesajlarınızı düzenleyemezsiniz
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372