PHP Tecrübeleriniz
-
yazdığın herşeyi ufak fonksiyonlar haline getir , bunları kullanmak istediğin yerde include ile çağır
mesela paging diye bir sayfalama fonksiyonun olsun bunu her sayfalandırma yapacağın yerde kullan
img_upload , crop , connect, list, form vb her temel işlem için bir fonksiyonun olsun bunları zamanla geliştirirsin
html ile bağlantısını fonksiyna aldığın bir parametrede css-stil belirterek sağlarsın , ben bu dosyalarımı lazim_olur isimli klasörde tutuyorum
aynı şekilde , bir dosyanın kullanacağı tablolarıda vt da tanımlamak gerekir bunlarıda açıklama satırı olarak girsen iyi olur ve temel tabloları da tmp halde .sql olarak tut , mesela veri, uyeler, haberler vb
sonra çalışman 5-10 kat hızlanır
-
aynen bende fırsat bulduk php kasmaya calisiyorum lazım olur burası bana
-
Eski sürümlerde magic_quotes'a dikkat et. Açıksa birde üstüne sen tekrardan escape yaparsan temizlik işi uğraştırır.
Olabildiğince yeni sürümlerde çalışmaya çalış. Hazır script, kod parçası falan kullanacağın zaman da güncel olanları bulmaya çalış. Eskileri yeniye uydurana, onların zamanındaki sıkıntılara göre alınan önlemleri çözene kadar akla karayı seçersin. Unutma ki o zamanki açıkların bir çoğu şimdi daha kısa yollardan ve daha kolay şekilde önlenebiliyor.
Gereksinim duymadığın yerlerde sistem fonksiyonlarını kapat. Sistem fonksiyonlarından kastım exec gibi sistem üzerine etki edebilecek fonksiyonlardır.
Büyük projelere girişeceğin zaman script düzeni, veritabanı etkileşimleri, yazıları çıktılarken tırnak kullanımları gibi durumlarda nasıl davranman gerektiği konusunda tecrübe edinmek için wordpress tarzı hazır scriptleri incelemeni, kurcalamanı tavsiye ederim. Hatta bilgin varsa oop tarzı kodlama yapmanı öneririm. Ama lütfen herşeye, ota boka class yazmaya kalkma. Yerine göre kullanırsan işini kolaylaştırır, kullanmazsan uğraşına uğraş ekler.
Hazır classlar yerine göre işini kolaylaştırsa da bir çoğunun çöp olduğunu ve bilgi, isim göstermek için hazırlandığını unutmamak lazım. Benim tavsiyem yeterli hale geldikten sonra kendi sınıfını yazarsan çok daha işini görür. Hazır sınıfların yapısını çözene kadar, yeterli tecrübeyi sağlayana kadar php'yi baştan sona öğrenip daha iyisini daha kısa sürede yazabilecek seviyeye gelirsin.
Eclipse ve netbeans ücretsiz ve faydalı 2 ide'dir. Fakat php öğrenirken elini alıştırmak için notepad++ gibi kapsamlı editörleri kullanmanı öneririm. Çalışacağın her ortamda her an ide'ler hazır bulunacak diye bir durum da yok. Sürekli eclipse ile yazan adam tamamlayıcılara, hazır kod bloğu oluşturuculara bağımlı hale gelirse oturup notepad'de 2 satır kodu 1 saatte hazırlayabilir. Tedbirli olup, işi bilmek ama işe gitmemekte fayda var :)
Yeni sürümlerde bir çok komut duplicated hale geliyor. Yani yerini yeni ve daha işlevli fonksiyonlara bırakıyor (örneğin eskinin ereg komutları yerini preg komutlarına bıraktı). Bunları php.net'ten takip edip scriptlerini ona göre düzenlemen lazım. Bu duplicated komutların uyarıları 5.x gibi ara sürümlerde sorun teşkil etmezken php 6 gibi tam sürümlerde tamamen çalışmayacaklarını ve direk fatal error seviyesinde hataları alacağını unutma.
Dizi yapılarını görüntülerken print_r yerine var_dump kullan. Daha görsel ve etkili çıktı alırsın.
empty gibi komutlar değişken içeriğinde 0 gibi değerleri de null olarak kabul eder. Dışarıdan bu şekilde veri alacağın zaman buna dikkat et. Olurda kullanıcının 0 girmesi gereken bir alan olur, sen de empty ile kontrol etmeye çalışırsın. Hata da almayacağın için nerede hata yaptığını bulman uzun zaman alır. Bunun gibi değerler php.net'teki dökümanlarda detaylı var. Orayı inceleyebilirsin.
Veritabanı işlemlerinde eski stil normal bağlantı yaparken sql injection'a dikkat et -ayrıca bunu söylememe lüzum yoktu ama yazının diğer cümleleri önemli-. Bu konuda şu dökümanı (http://tahribat.com/Dokuman-Php-Ile-Basit-Sql-Injection-Onleme-Yontemleri-417/) yazmıştım. Buradaki bilgiler işini görecektir. Ayrıca bunlarla uğraşmayıp daha stabil kullanım için pdo sınıfını kullanmanı öneririm. En kötü hala daha klasik kullanmak istiyorum ben diyorsanız mysql yerine mysqli kullanın. Mysql sınıfının gelişimi durdu ve çıkacak ilk tam sürümde tedavülden kalkıp yerini tamamen mysqli'ye bırakacak.
Ona buna, herşeye değişken tanımlamaya lüzum yok. POST ve GET dizileri ile gelen verileri değişkene atamak uzun isimlendirmelerde veya okunabilirliği artırmak açısından faydalı olabilir. Fakat normal çıktı alırken bir dizi elemanını göstermek için ayrıca değişken içine almamıza lüzum yok, dizi zaten bir değişkendir. echo "dizi elemanı $dizi[2]" şeklinde kullanabilirsiniz. Php.net'in php temelleri bölümünde bu tırnak konusuna güzelce değiniliyor. Bu çoğu kişinin atladığı bir konu fakat yerine göre kullanımlarda işi hatırı sayılır şekilde kolaylaştırıyor. Çoğu zaman sırf tek tırnak arasına alma inadından birleştirmelerle koca satırın okunaklığı yerlere iniyor. Tek tırnak yapısı gereği faydalıdır. İçindekileri direk string olarak yorumladığı için ayrıca değişken var mı yok mu yoksa varsa çözümlemek gerekiyor mu şekilde ekstra işlem yapmaz. Bu açıdan büyük projelerde performans artışı bile sağlayabilir. Fakat ufak çaplı projelerde, sayfada 2 satır çıktı alınacak yerde bu şekilde kullanmaya çalışmanın bence lüzumu yok.
Hataları error_reporting veya @ kullanarak hataları bastırmak sağlıklı bir yöntem değil. Çöpü halının altına süpürtmekten farkı yok. O hataların çıkabileceği yerlerde önlem almak, gerekiyorsa hatanın çıkmaması için birkaç ekstra sorgu eklemekte fayda var.
Bunun gibi çok şey var anlatılabilecek. Bir ara vakit buldukça onları da eklemeye çalışırım.
Son olarak
@iqsuz
$gelen_post_deyim="isim";
$ad=$_POST[$gelen_post_deyim];
Bu hiç bir işe yaramaz. Sen ha elle oraya isim yazmışsın, ha değişkenin içindeki isim değerini çözümletip oraya yansıtmışsın aynı şey. Php'yi ekstra zahmete sokuyorsun.
Austen tarafından 11/Eki/12 09:22 tarihinde düzenlenmiştir -
asiminnesli bunu yazdı
ben vaciz hane bildim ile en çok yaptığım hatayı söyleyeyim
db de 1 sutun olsun
id isim
1 asaa
2 bbbb
3 ccccc
bunların sitede alt alta sıralamak için sakın ama sakın (bence) for içinde WHERE id=1 şeklinde tek tek çağırmayın bunun yerine array ile sraıalamyı kullanın hem daha az sql sorgusu oluşuyor ve performansı etkiliyor hemde silme değişirme gibi eylemelrde daha az sorun çıakrıyor
wtf :|
