• 08-08-2012, 10:33:42
    #1
    Bu forumda bu tarz konular var, fakat bircogu ya antik bilgiler yada komple yanlis yonlendirmeler. Ben soyle bir liste yapayim dedim;

    1. Artik seneler oncesinden kalan aliskanliklardan kurtulun, Nesne yonelimli programlamaya gecin. Buldugunuz eski makaleleri hice sayin. Tabii ki nesne yonelimli calisma gerektirmeyen projelerde olacaktir, fakat buna karar vermekte profesyonellik ister. Standartlara uyun, nesne yonelimli yazin.
    2. Geliştirirken hata raporlamayı mutlaka açın, ve seviyesi E_ALL olsun. Bu gerçekten önemli. Sadece yazılımınızı kusursuz yapmaya değil E_NOTICE seviyesindeki uyarilariyla bilginizi her geçen gün arttıracaktır.
    3. PHP'nin kendi built-in fonksiyonlarını kullanın. Bunlar C levelinde yazılmıştır ve herzaman için daha hızlı çalışacaktır. Eğer işinizi PHPnin kendi fonksiyonlarıyla halledebiliyorsanız, ekstra clone yazmaya hiç gerek yok.
    4. Mümkün olduğunca tek tırnakları kullanın. İçinde değişken yada özel karakter barındırmayan stringler için çift tırnak kullanmak tamamen hamallıktır.
    5. Büyük projelerinizde mutlaka MVC yapısını izleyin.
    6. include_once ve require_once kullanmaktan çekinin. Bunlar hantal fonksiyonlardır. Projenizi adam gibi tasarlayın, bunlara ihtiyaç kalmayacaktır.
    7. Veritabanınızı mutlaka koruyun. İster bütün tırnakları escape ettiğinizden emin olun, ister prepared queries kullanın. Yöntem çok önemli olmasada, SQL injection'a karşı test edin projelerinizi
    8. Ternary operatörlerini kullanın. Kod satırınızı azaltıp hem taramayı hızlandırır hemde yazdığınız kod karışık olmaz.
    9. Döngüler içinde SQL sorguları kullanmaktan çekinin. Unutmayın MySQL tek sorgu ile birden fazla veri girişi yapabiliyor mesela. Döngü içinde sorgu stringini hazırlayın, sonra tek seferde çalıştırın.
    10. Son tavsiyemde size yazdığınız kodu yorumlamak olsun. Her fonksiyonunuzu, her sınıfınızı mutlaka yorumlayın.




    Dayanamayıp birde bonus vereceğim.
    for($i=0;$i<count($array;$i++)) {}
    gibi count kullanmayin asla. once saydirip degeri $n = count($array); seklinde alin sonra $n'i donguye dahil edin. Bunun sebebi dongunun her seferinde o diziyi sayacagidir. Eger PHP diger Nesne yonelimli diller gibi $array.size() seklinde bir erisime sahip olsaydi bu problem olmazdi, cunku onlarda sadece ram'de tutulan bir veriye ulasiliyor saydirma yapilmiyor.
  • 08-08-2012, 10:36:50
    #2
    Öğrenemedim gitti şu php yi
  • 08-08-2012, 11:55:26
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Güzel öneriler, de 6. madde biraz sıkıntılı gibi. Açıklık getirmek gerek oraya. Hem 3. madde de PHP'nin kendi fonksiyonları hızlıdır demişsiniz hem de 6. madde dekiler hantaldır demişsiniz. Bu paradoks biraz kelime oyunuydu. Asıl soruma geçeyim, yalnış anlamayın doğrusunu öğrenmek istediğimden soruyorum. Bunlar hantal ise, kullanmayacaksak, projelerimizi tek dosyada tutmak mı adam gibi tasarlamaklamaktır? Yoksa dosyayı okuyup eval()'den mi geçirmek daha iyidir?

    Eğer bahsettiğiniz hantallık '_once'lerden dolayıysa Singleton Pattern mantığıyla çalışan şöyle bir fonksiyonla işimiz görülecek midir?
    function load_once($file, $method = 'require')
    {
    	static $loaded_files = array();
    	if (!empty($loaded_files[$file]))
    		return;
    	if ($method == 'require')
    		require($file);
    	else
    		include($file);
    	$loaded_files[$file] = true;
    }
    Teşekkürler.
  • 08-08-2012, 21:56:05
    #4
    grafitus adlı üyeden alıntı: mesajı görüntüle
    Güzel öneriler, de 6. madde biraz sıkıntılı gibi. Açıklık getirmek gerek oraya. Hem 3. madde de PHP'nin kendi fonksiyonları hızlıdır demişsiniz hem de 6. madde dekiler hantaldır demişsiniz. Bu paradoks biraz kelime oyunuydu. Asıl soruma geçeyim, yalnış anlamayın doğrusunu öğrenmek istediğimden soruyorum. Bunlar hantal ise, kullanmayacaksak, projelerimizi tek dosyada tutmak mı adam gibi tasarlamaklamaktır? Yoksa dosyayı okuyup eval()'den mi geçirmek daha iyidir?

    Eğer bahsettiğiniz hantallık '_once'lerden dolayıysa Singleton Pattern mantığıyla çalışan şöyle bir fonksiyonla işimiz görülecek midir?
    function load_once($file, $method = 'require')
    {
        static $loaded_files = array();
        if (!empty($loaded_files[$file]))
            return;
        if ($method == 'require')
            require($file);
        else
            include($file);
        $loaded_files[$file] = true;
    }
    Teşekkürler.
    Soyle daha acik ifade edeyim;

    PHP'nin built-in fonksiyonlari sizin tasarladiginiz fonksiyonlardan daha hizlidir. PHP'nin kendi fonksiyonlari arasinda ise include ve require herzaman icin include_once ve require_once versiyonlarindan daha hizlidir.

    Sizin yazdiginiz fonksiyonda hos, fakat hafizada bosuna yer tutacaktir ve yine include ve require'dan daha yavas olacaktir.

    Benim tavsiyem scriptinizda dosya dizin yapinizi duzgun tutmaniz, nerde hangi senaryoda neyi include ettiginizi bilip tekrar include etmemeniz. include_once pek umursamayip onceki kodda ne oldugunu bilmeden direk yazip gecmeyi sectiniz zamanlarda kullanilmak icin varolan bir fonksiyon. Projenizi bastan iyi tasarlarsaniz, ihtiyaciniz olmayacaktir.

    Dosyayi okuyup eval ile calistirma olayina gelincede, oyle bir teknigin yanindan bile gecmeyin derim : ]
  • 08-08-2012, 22:55:50
    #5
    DooMsDaY adlı üyeden alıntı: mesajı görüntüle
    Soyle daha acik ifade edeyim;

    PHP'nin built-in fonksiyonlari sizin tasarladiginiz fonksiyonlardan daha hizlidir. PHP'nin kendi fonksiyonlari arasinda ise include ve require herzaman icin include_once ve require_once versiyonlarindan daha hizlidir.

    Sizin yazdiginiz fonksiyonda hos, fakat hafizada bosuna yer tutacaktir ve yine include ve require'dan daha yavas olacaktir.

    Benim tavsiyem scriptinizda dosya dizin yapinizi duzgun tutmaniz, nerde hangi senaryoda neyi include ettiginizi bilip tekrar include etmemeniz. include_once pek umursamayip onceki kodda ne oldugunu bilmeden direk yazip gecmeyi sectiniz zamanlarda kullanilmak icin varolan bir fonksiyon. Projenizi bastan iyi tasarlarsaniz, ihtiyaciniz olmayacaktir.

    Dosyayi okuyup eval ile calistirma olayina gelincede, oyle bir teknigin yanindan bile gecmeyin derim : ]
    Hımm. Tamamdır anladım demek istediğinizi. Teşekkürler 100Watt'lık aydınlatma için.