Yıllardır ASP ile kod yazmış birisi olarak PHP ile ilgili öğrendiklerimi buraya yazmak istedim. Temelde değişik gelse de javascript kodlardan aşina olduğum bir düzen gördüm.
- Satır sonlarında ; eklemem gerektiğini öğrendim.
- Değişkenleri tanımlarken başına $ koymamız gerekiyor. Ayrıca büyük küçük harf ayrımı nedeniyle tamamen küçük harfler kullanmanın faydalı olacağını öğrendim.
- Değişkenleri adlandırırken harf veya _ ile başlayabileceğini rakamlarla başlayamayacağını (ASP’de de aynıdır) öğrendim.
- Verilen değişkenlerin sadece içinde olduğu fonksiyon veya scripte ait olduğunu, aynı değişken ismini başka fonksiyon veya script içinde kullanınca birbirine karışmadığını öğrendim. Ancak global tanımı yapılarak bir değişken değerinin o değişkeni çağıracak tüm script veya fonksiyonlarda aynı kalacağını da öğrendim.
- Superglobals sayesinde $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, $_ENV, $_REQUEST, $_SESSION kullanabilecekmişim.
- PHP’de veri tiplerini öğrendim. Bunlar sırayla Boolean (true,false), Integer (tamsayı), Float veya Double (kayan noktalı sayı), String (karakter topluluğu), Object (sınıf örneği), Array (sıralı bir anahtar ve değerler topluluğu), Resource (üçüncü parti bir kaynağa referans, veritabanı gibi) ve NULL (atanmamış değer)
- gettype(), settype() komutlarını öğrendim. Ayrıca mevcut bir verinin tipini değiştirmeyi öğrendim. Mesela $var = “3″; iken $sayi = (integer) $var; diyerek $sayi değişkenine tamsayı olan 3 ü atayabileceğimi öğrendim.
- “30cm” + “45cm” gibi bir toplamanın sonucunun 75 sayısını verebileceğini, ilk harf görüldüğü yere kadarki rakamların oluşturduğu kısmın sayısal değerinin kabul edildiğini öğrendim.
- Aynı şekilde $x = “30cm”; iken $y = (integer) $x; denilince $y = 30 olacağını, “cm” nin yok sayılacağını da öğrendim. Bu bazen çok fayda sağlayabilir. ASP de gelen veri sayısal mı değil mi diye kontrol ederdik, değilse işlem yapmazdık, veya biz bir fonksiyonla temizlerdik. :)
- = (eşittir) atama operatörü olduğunu öğrendim. $x = “3″; veya echo $x = “4″; diyerek atama yapabileceğimi, echo olanla aynı zamanda ekrana da yazdırabileceğimi öğrendim. Böylece bir satırda hem atama hem de yazdırma yapabildim.
- +, – , / , * ve % (mod) aritmetik operatörlerini öğrendim.
- . (nokta) ‘nın birleştirme operatörü olduğunu öğrendim. (ASP de & kullanılır)
- $x = 4; $x += 3; denilince $x in 7 değerini aldığını gördüm :)
- $y = “ersin” ; $y .= ” koç”; denilince $y nin ersin koç değerini aldığını gördüm.
- $x++; diyere $x in bir artırıldığını, $x– ile tam tersi şekilde bir azaltıldığını öğrendim. $x = $x +1; demek de aynı işi görür.
- $x = 5; $y = $x++ +2; denilince $y nin 7, $x in ise 6 değerini aldığını (işlem sonrası $x i bir artırıyor, işlemde önceki değeri kullanıyor)
- $x = 5; $y = ++$x +2; denilince $y nin 8, $x in ise 6 değerini aldığını (işlem öncesi $x i bir artırıyor)
- Karşılaştırma operatörlerini öğrendim. Bunlar == (eşit), != (eşit değil), === (değeri ve tipi aynı), > (büyüktür), >= (büyük eşit), < (küçük), <= (küçük eşit) şeklindeler.
- == ile eşitliği kontrol ederken = ile değer ataması yaptığımızı öğrendim.
- Mantıksal operatörleri öğrendim. Bunlar || (sol veya sağ true), or (sol veya sağ true), xor (sol veya sağ true, ancak ikisi birden true olamaz), && (sol ve sağ true), and (sol ve sağ true), ! (tek başına kullanılarak true olmadığı anlamını verir)
- Operatör önceliklerini öğrendim, ancak parantezleri doğru kullanarak operatör öncelikleri ile kafa yormamak gerektiğini de öğrendim :)
- Sabitleri (Constant) öğrendim. define(“SABIT_ADI”,”deneme”); Sabitlerin başında değişkenlerde kullanılan $işaretinin olmadığını öğrendim. define(“SABIT_ADI”,”deneme”,true); diyerek SABIT_ADI, Sabit_Adi vs. gibi büyük küçük harf uygunluğuna bakmadan sabit ismini kullanabileceğimizi öğrendim. Ancak default değerin iyi kod yazmak açısından uygun olduğunu anladım.
- PHP tarafından verilen ön tanımlı sabitler olduğunu öğrendim. (__FILE__, __LINE__, PHP_VERSION gibi)
Bir sonraki yazımda akış kontrollerini yazacağım. Yazarak akılda kalıcılığı artırdığıma inanıyorum.
Bir kaç gün önce PHP öğrenmeye başladığımı dile getirmiştim.Öğrendiklerimi basitte olsa bir proje üzerinde kullanmazsam pekişmeyeceğinden kanaatle Friendfeed.com API desteği ile çalışan FFextra.com isminde bir site hazırlamaya karar verdim.
Amacım FriendFeed API desteği ile henüz FriendFeed üzerinde verilmeyen veya verilmeyeceğini düşündüğüm bazı hizmetler vermekti. Bunlar sizin takip edip sizi takip etmeyenleri bir arada görme, sizi engelleyen veya sizin engellediğiniz kişiler, sizin yazdığınız son yazılara beğendim (like) diyen ama sizi takip etmeyen kişileri listemelek gibi hizmetler. Daha fazlası için API dökümanını inceliyorum. Friendfeed kullanıcıları tarafından her gün girilecek bir site (uygulama) olmasını bekliyorum.
Denemelerim esnasında henüz tam olarak işlevini yerine getirmeyen siteyi test eden bazı kullanıcıların engelleyenler olarak gösterilen kişilerle telefonla vs. iletişime geçerek “sen beni nasıl engellersin” tarzında sitemleri, haliyle de kabağın benim başımda patlayacağı “hayır ne engellemesi, hatalı o site” gibi cevapları olmuş. Ben API nin yalancısıyım. Bana gelen verileri doğru algoritmalar içerisine sokarak sizi engelleyen, sizin engellediğiniz veya FriendFeed’in hesabını kapadığı ama nedense bazı kişilerin takip listesinden vs silmediği kullanıcı adlarını toparlamaktan başka birşey yapmadım.
Sistem çok basit bir mantıkla işliyor. Önce sizin takip ettiğiniz rastgele 30 kişi alıyorum. Bu kişilerin de takip ettiği kullanıcıları hem sizin oturumunuz hem de anonim olarak bakarken nasıl gördüğünüz şeklinde ikiye ayırıyorum. Eğer anonim olarak bir kişinin takip listesinde olan kullanıcıyı sizin oturumunuzla kontrol ettiğimde göremiyorsam o kişinin sizi engellemiş olduğu ortaya çıkar. Bunun başka açıklaması ise o kullanıcıyı siz engellediniz veya hesap kapatılmış da olabilir. Ayrıca kullanıcıya Direkt İleti gönderme hakkınız varsa o kullanıcının sizi engellemediğine kanaat getiren bir başka kontrol daha vardır.
Sözün özü, çok can yakan bir uygulama yazmışım. Sen beni ben seni neden engellediğimi bırakalım, diğer bir mevzu ise sizin takip edip sizi takip etmeyen kullanıcılar. Bunu bir kaç kez dile getirmiştim. Benim gördüğüm kadarıyla önce herkesi takip etmeye çalışan karşı kullanıcılardan da takip edilen internetin ağır abileri/ablaları(!) kısa süre sonra kendi takip ettikleri kullanıcılardan aboneliği iptal ederek tek yönlü bir bilgilendirmeye gidiyor. Bunu yapanları gün gün takip ettim, abonelik sayılarının nasıl 1000 den 300 e sonra da 30 a indiğini gördüm. Ama tam tersi abone olanlar 1000 lerden en fazla 900 e düşüyordu. Yani önce 1000 kişi takip et, onlar da sizi takip etsin. Ama siz abone olduklarınızdan 970 tanesini silin, sildiklerinizden çok azı sizi silsin. 30 kişi takip ederken sizi 900 kişi takip eder hale gelin, sonra da havalı havalı beni takip ediyorlar triplerine girin. İşte bu uygulamayı her gün kullanan kendine abone olanlardan an ve an vazgeçenleri görecek, karşılıklı olarak o da aboneliğini iptal edebilecektir.
Bir de sizin veya baktığınız kullanıcının son 100 mesajına beğendim (like) diyenler ama sizin takip etmedikleriniz var. Bu da sizi takip etmese bile her tür girdinize ilgi gösterenleri ortaya çıkarıyor. İsterseniz o kişileri takip edebilirsiniz.
PHP bilgimi artırmak için yazılımı geliştirmeye devam edeceğim. API tarafından sağlanan her veriden yeni bir özellik planlayacağım. Ayrıca yazılımın zaman zaman indirilebilir halini bu sitede yayınlayacağım. Böylece benzer uygulama yazmak isteyen yazılımcılar için bir kaynak olacak. İlginize ve eleştirilerinize teşekkürler.
Çok uzun süredir yazılım geliştiririm. Geçmişte o kadar çok dil kullandım ki çoğunu yeni nesil bilmez bile. Uzun süredir web üzerinde aşina olduğum vbscript nedeniyle ASP 3.0 (Active Server Pages : sanki bilmeyen var gibi) ve MySQL veritabanları ile projeler geliştiriyordum.
Çoğu insanın yetersiz bir dil demesine rağmen ben ASP yazmaktan asla vazgeçmiyordum. Ama bir gün geldi çattı ki, kullanmak istediğim bazı servisler, API ler için örnek ASP kodu bile yazma zahmetine girmiyor, kendim geliştirdiğim http://www.tekparola.com için PHP örnek kod yazacak gerçekten işi bilen birisini bulamıyordum. O zaman vaktinde bir köşesinden başlamak isteyip hep vazgeçtiğim PHP öğrenmenin, hatta öğrenmekle kalmayıp kurdu olma yolunda adım atmanın vakti geldiğine karar verdim.
Seni de aramızda görmekten memnunuz diyen ama benim 2 günde öğrendiğim PHP bilgisi kadar bilgisi olan, hazır scriptleri editleyerek proje yaptım sanan tayfaya artık aldırış etmiyorum. Madem PHP öğrenmeye başladım o zaman basit bir proje ile başlayım, syntax bilgim gelişsin dedim. http://www.ffextra.com adında Friendfeed ‘in API ‘si ile çalışan bir proje başlattım. İlk günün sonunda kendimin de inanamadığı şekilde artık PHP yazan, eli syntax e alışmış, her komutun sonuna “;” koyan biriydim artık. Üstelik yazdığım proje gayet işlevsel ve sorunsuz çalışıyordu.
Webde her tür dökümana ulaşabilsem de vakti evvelinde ödünç verip geri alamadığım PHP kitaplarıma ihtiyacım olduğunu farkettim. Her ne kadar kitap satışı üzerine yaptığım bir site (http://www.kitapalemi.com) de olsa ben en acilinden iftar vakti hanımla birlikte D&R’a gidip bir kaç PHP kitabı aldım. Bu kitaplardan birisi tamamen sunucuların performansı üzerine profesyonel bir kitap. Ben sunucu bilgisi zayıf insanın web projesi üretmesine iyi gözle bakmam.
Neyse uzun lafın kısası artık ben de <? echo “merhaba uzaylı”; ?> diyorum. Zaman zaman PHP ile öğrendiklerimi anlaşılır dille buraya yazmak isterim. İlginize sonsuz teşekkürler.