PHP öğrenme - bir çerçeve ya da hayır ile başlar?

8 Cevap

Ben PHP için benim alanda işlerin bir sürü fark ettik. Ben daha önce PHP hiç kullanmadım, ve ben onu almak eğer ben daha fazla fırsat alabilirsiniz eğer rakam o zaman iyi bir fikir olabilir. Sorun herhangi bir çerçeve olmadan PHP çirkin ve zaman gerçekten kötü kod% 99 olmasıdır. Gördüğüm tüm dersler ve kitaplar gerçekten berbat - iyi programlama uygulama ama şeyler yapmanın yolu her zaman hızlı ve kirli tür her türlü gösterir asla. Ben PHP bu şekilde öğrenmeye çalışıyorum sadece kafamda bu kötü uygulamaları diziye ve bana onları unutmak için çalışırken, daha sonra zaman kaybetmeyin yapacak korkuyorum. Ben OOP ve yazılım tasarım desenleri ve benzeri aşina değilim bu yüzden geçmişte C # kullandım.

Ben bunun için daha iyi bilinen çerçeveler birini kullanarak PHP öğrenmek için çalışıyor olmalıdır? Ben şimdiye kadar CakePHP, Symfony ve Zend Framework baktım; (Symfony Rails Ruby olmak çok zor çalışıyor CakePHP daha az kısıtlayıcı görünüyordu rağmen) Zend çok Kek ve Symfony gibi kısıtlayıcı olmadan en esnek gibi görünüyor, ama ben gördüm Zend için birçok dersler zaten PHP biliyor ve kabul çerçevesini kullanmayı öğrenmek istiyorum.

Ne PHP öğrenme, ancak bunun yerine spagetti kod gerçek yazılım mühendisliği teknikleri kullanır İYİ PHP öğrenmek için en iyi fırsat olurdu? Tüm PHP kitaplar ve kaynaklar sadece zaten PHP biliyor ve bu nedenle bile dil kısımlarında dokunmayın o çiğ PHP kullanarak ve bu nedenle bade uygulamaları vitrin, ya da varsayalım ya görünüyor.

8 Cevap

Eğer bir çerçeve olmadan PHP öğrenme kafanın içinde kötü uygulamaları diziye gidiyor endişe ediyorsanız, daha büyük bir sorunumuz var. ;) Ben çerçevesinde herhangi bir tür aşinalık kazanmak daha önce herhangi bir dil ile, dilin kendisi ile rahat olması gerektiğine inanıyoruz. PHP çerçeveler birçok dalmıştır birisi olarak, ben birini kullanarak otomatik (vb, kontrolörler içinde berbat kod yazmak için hala oldukça mümkündür) "iyi PHP" öğrenmenize yardımcı olmayacağını garanti edemez.

Benim tavsiyem? Zaten OOP ile rahat iseniz, o zaman sorun PHP iyi OOP uygulamaları toplayıp olmayacaktır. Bu ilk Do - sen dili ve huyların ile rahat olduğundan emin olun. Eğer bu noktaya olduğunuzda, sizin seçtiğiniz çerçeve takdir için büyük bir üs olacak.

(Ben de Zend Framework hakkında yukarı pompalanır alamadım tavsiye ediyorum, evet, o MVC kavramı etrafında paketlenmiş kütüphaneleri gevşek bir koleksiyon olduğunu anlamda "esnek" olduğunu, ancak gerçek MVC bir sürü taşımıyor işlevsellik ve alanlarda bir sürü gereksiz yere karmaşık)

Getting started

PHP (PHP hiçbir deneyimi) öğrenmek için çalışıyorsanız ben ilk Codeigniter gibi kolay bir çerçeve almak gerekir sanırım. Orada screencast izlerken Codeigniter ile oluşturabilirsiniz göreceksiniz basit bir blog 20 dakika içinde. Ben CodeIgniter allready aşağıdaki sağlam bir temel var, çünkü sadece düz PHP ile böyle bir şey kod sanmıyorum:

  • MVC: Bence bu temiz ayrılmış kod yazmak için yardımcı olur.

    MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.

  • Database: Bu modül, bir çok veritabanı ağrısı ile size yardımcı olur.

    CodeIgniter comes with a full-featured and very fast abstracted database class that supports both traditional structures and Active Record patterns. The database functions offer clear, simple syntax.

  • Kolay: CodeIgniter büyük bir artı olduğu almak gerçekten çok kolay.

    CodeIgniter dört adımda yüklenir:

    1. Paketi açın.
    2. Upload the CodeIgniter folders and files to your server. Normally the index.php file will be at your root.
    3. Open the application/config/config.php file with a text editor and set your base URL. If you intend to use encryption or sessions, set your encryption key.
    4. If you intend to use a database, open the application/config/database.php file with a text editor and set your database settings.
  • Hızlı: Rasmus (PHP mucit) kriter orada PHP çerçeveler (slaytlar 24-32) bir sürü yaptım ve gördüğünüz gibi Codeigniter diğer bazı framweworks karşılaştırıldığında iyi bir performans sergiliyor. Ayrıca ben http://talks.php.net/ adlı mosts slaytlar gerçekten çok iyi olduğunu fark etmek istiyorum.

Learning PHP

Geçmişte Matt Zandstra's PHP book ki gerçekten çok iyi ve ben düzgün PHP öğrenmek için okumak gerektiğini düşünüyorum tökezledi.

PHP "best" practices:

"Clean" code:

  • Bilgi Recess PHP çerçeve. Ben de gerçekten bu çerçeveyi sevdim. Bu dinlenme gibi uygulamalar oluşturmanıza yardımcı olacaktır.
  • Düzgün kodu test etmek TDD / phpunit öğrenin.
  • MVC öğrenin.
  • OOP öğrenin.

Performance:

  • APC: mümkün tüm gerçekten php hızlandırmak için apc yüklemeniz gerekiyorsa. Bu bellek (büyük, çok büyük bir destek) olarak PHP opcode depolar.
  • Memcached: Veritabanı ağır yük altında olduğu zaman da belleğinde sorgunun saklamak gerekir.

İyi şanslar!

Aksi takdirde işler temel düzeyde nasıl çalıştığını hiçbir bilgi ile BROKENS düzeltmek için yollar arıyor olacağım, vanilya ile başlayın. PHP, tüm sonra ücretsiz yüzden apache ve mysql, ve bu kurduktan sonra (bu oranda bir şeyi berbat olsa bile bir gün sonra uzun sürmemelidir) istediğiniz tüm oynayabilirsiniz.

Php hakkında en iyi şey? Bir sayfa yenileme ile değişiklikleri derlemek 8)

Sorun herhangi bir çerçeve olmadan PHP çirkin ve zaman gerçekten kötü kod% 99 olmasıdır.

Bu doğru değil. Orada çirkin ve kötü kod sürü kesinlikle, ama bir çerçeve olmadan PHP doğal olarak çirkin değil, ne de otomatik olarak kötü kodudur. Ayrıntılı, evet, her şey yok. PHP içine almak için sadece kolaydır. Bu popüler ve hızlı bir web sayfası saçmak için PHP kullanarak insanların birçok yazılım mühendisliği hakkında hiçbir eğitim ya da endişe var bu yüzden.

OOP ve OOD bir tutuş var ise, o zaman PHP kodu için bu bilgiyi uygulayarak hiçbir sorun olacaktır. Sadece bir headstart almak için PHP manual okuyun. Sen bunları C # çalışmak için beklediğiniz gibi bazı şeyler çalışmaz, ama bu sizin için herhangi bir haber olması gerektiğini göreceksiniz.

Eğer bir çerçeve ile işe başlamak gerekir olup olmadığını gelince, ben hayır derim. Ne demek için bir çerçeve öğrenin. Bu web uygulamaları geliştirme kolaylığı anlatıyor. PHP öğrenmek için kullanmayın. Ve her iki PHP çerçeveler, temiz ve sürdürülebilir kod harikaları olmasını beklemeyin. Orada good ones out there, but also lots of crap.

Tüm dillerde kötü kod bok gibi görünüyor. PHP sadece kolay böyle yazmak için yapar ve varsa görsel ipuçları sağlar.

Genel öneri: learn php before using frameworks.

Bunlar hepsi çok, onlardan kötü uygulamaları öğrenmek olabilir kusurlu bulunmaktadır. Ayrıca, tek bir sepet içinde tüm yumurtaları yerleştirerek olacaktır - kötü uzun vadeli strateji, sen geliştirme php tarafında işe özellikle.

Eğer php öğrendim, yapmaya your own php framework. Bu neredeyse geçiş bir ayin gibidir. Onlardan en az 3 yazılı değil varsa düz bir yüz ile bir "php geliştirici" Kendinizi arayamazsın. İşte size bir php çerçevesinde istediklerini en azından biraz anlayış verecek.

Oh .. ve uzak diğerleri şüphesiz tanıtacağı çerçeve CakePHP ve CodeIgniter muaftır. Bunlar, korkunç kötü uygulamaları ile doldurdu. Eğer must bir çerçeve seçerseniz, daha sonra (büyük rezervasyonları ile) Symfony2'de veya Kohana bakmak. Her ikisi de kusurları var, ama en azından onlar "en iyi uygulamalar" bazı duymuşsunuzdur. Alt satır: all php frameworks are bad. And some are worse then others.

Ve klasik MVC, Model2 MVC ve MVP arasındaki farkı öğrenin. Php çerçevelerin çoğu kasten ayrım göz ardı edilir.

Yani .. Sonuç olarak, bazı şey hakkında bilgi sahibi olmalıdır:

  • Uygun bir Model2 MVC yazma
  • Demeter Hukuk
  • SOLID ilkeleri
  • ne küresel bir devlet olduğunu ve neden kötü
  • Bağımlılık Enjeksiyon

codeigniter bakmaya çalışın. onunla başlamak için basit.

(yakut ve RoR aksine) bir php çerçevenin hiç de-facto standart var

benim önerim: Eğer bir şey anlayamıyorum zaman kitap ve makaleler hazırlıyor, bir çerçeve kullanmayı deneyin

İşte benim görüşüm:

Sana learn php, do not bir çerçeve ile başlamak istiyorsanız, size bir çerçeve kullandıysanız, yapmak zorunda değilsiniz, çünkü sıfırdan her şeyi yazmak ve bu ölçüde becerilerini artıracak çerçeveler genellikle farklı şeyler için hazır çözümleri bir dizi ile size çünkü çok ve orada tarafından çok öğrenmek.

Eğer PHP (özellikle OOP) iyi bir anlayışa sahip olduktan sonra, ancak o zaman bir çerçeveye hareket etmelidir ve bu sefer çerçeve sizin için çok daha kolay olacaktır. Eğer PHP üzerinde iyi bir komut var bir kez (kendi sınıfları ile, vb) çerçeveyi kendisi ekleyebilir veya değiştirebilirsiniz. Sonunda, ben size (gelişmiş) CodeIgniter framework or Kohana için gitmek öneririz.

Benim görüşüm PHP farklı C # (örn. diziler sağlamalarının nasıl çalışır, nasıl çalışır) daha şeyler nasıl işleyeceğini temellerini öğrenmek için bazı öğreticiler bakmaktır. Bunu anlamak kez, sonra bir çerçeve gidin. Hepsi sadece bitti usul stil herhangi bir ayrılık var asla - - Bunu şeyler kaçınmak istiyorsanız onlar sadece gerçekten kötü kodlama uygulamaları (PHP / MySQL öğreticiler yarısında bakmak vitrin olacak çünkü PHP çoğu diğer öğreticiler ile zaman kaybetmeyin .)

Ben PHP kendimi kullanmayın çünkü ben bir çerçeve ya da başka lehine diyemeyiz. Okuduğum kadarıyla, Symfony size geleneksel kısıtlamaları a la Raylar sürü olmadan gerekenleri yapmak için kadarıyla araçları iyi bir karışımı olarak "en iyi" olmak gibi görünüyor. Ayrıca söz Zend Framework, iyi bir seçim gibi görünüyor ama gerçekten daha PHP J2EE gibi karşılaşır; Gerçek bir çerçeve ama kullanışlı kitaplık bir koleksiyon değil. Bu diğerleri gibi tüm çerçevesini kullanarak zorlamaz çünkü uzun vadeli almak için en iyi biri olabilir. Bu yüzden tüm projelerde kullanılmak için araç eklemek için kolay olabilir bulunuyor. DB erişim eski usul tarzı ile eski bir PHP proje üzerinde çalışıyoruz Örneğin, bunu geri kalanı getirmeden refactor ZF veritabanı katmanı tanıtabilirsiniz. Bunu, örneğin, Symfony ile bunu yapamam.

CodeIgniter / Kohana (Ben Kohana evrimi anlamak gibi) de destekçileri güçlü bir grup var, ama ne kadar iyi konuşamıyor. Ben CI tür PHP yapmanın eski "kötü" yolu ile uyumluluğu sağlamak için MVC çekecekleri biliyoruz. O da, içine bakarak değer olabilir böylece taraftarlarının bir yeri vardır.

Ben sadece ZF için düşünülen bir başka yararı, bir PHP iş olsun eğer söz konusu uygulamanın bir kaç yıldan civarında fazla olmuştur, özellikle eğer, bu zaten bir çerçeve kullanarak olacak son derece şüphelidir, akılda tutmak olduğunu. Şansı o standart Klasik ASP (Ben aşina eminim, ya da en azından bunun korku hikayeleri, duydum) onlarca dosyaları içerir olan ve PHP sayfaları tüm mantık ve sunum karıştırma yolu olacaktır vardır. ZF temelde bin tüm eski kod savurma ve tam yığın çerçevesi ile taze başlangıç ​​daha böyle bir senaryoda entegre etmek daha kolay olacaktır. Düşünce için sadece gıda.

Yine, ben bir PHP adam değilim ama bu genel yolu takip edecek:

  1. Dilin nüansları öğrenmek için ara PHP kitap okumak (zaten programlama deneyimi var dedi beri uzak acemi şeyler uzak kalmak)
  2. Eğer kemer altında "tam bir yığın" çerçeve var ve bu yüzden Symfony'de bak
  3. Eğer bir çerçeve (yani temel CRUD ekranlar daha bir şey) ve / veya mevcut projelere entegrasyonu için kendisini ödünç daha karmaşık projeler için birlikte çalışabilir araçlarından oluşan bir kitaplık var bu yüzden Zend Framework bak.

Bu yardımcı olur umarım!