Bir çerçeveyi ne zaman kullanmam gerekir? [kapalı]


15

Web programlama konusunda yeniyim ve şu anda PHP hakkında bilgi ediniyorum. CakePHP gibi bir PHP çerçevesini ne zaman kullanmam gerektiğini bilmek istiyorum? Bu ve diğer benzer PHP çerçevelerinin bana sunduğu şeyler nelerdir? Profesyonel olmak için bir çerçeve kullanmak gerçekten önemli mi?

  • Ve beğendiğim özellikleri sağlamak için kendi çerçevemi oluşturabilir miyim?

3
Ne sunduğunu anladığınızda ve gerektiğinde etrafında çalışabildiğinizde, [xyz] çerçevesini kullanın. Çerçeveler, nasıl kullanılacağını bilen ve seçimlerinin sınırlarını anlayan yetenekli insanlar için tasarlanmış araçlardır. Hiçbir koşulda yalnızca bir çerçeveyi inceleyerek bir dil öğrenmeyin. Bu, kasıtlı olarak ayak parmaklarınızı veya periferik vizyonunuzu kapatmak gibidir. İpucu, oturumlar kullandığınız PHP çerçevesine bağlı olarak garip davranır .. dikkatli olun :)
Tim Post

Yanıtlar:


10

PHP ile rahat olduğunuzda, bir çerçeve kullanmaya başlayabilirsiniz. Ve her zaman bunları kullanmalısınız:

  1. Her şeyi yeniden kodlamaktan çok, çok daha hızlı
  2. Veritabanlarını değiştirmek veya görünümleri değiştirmek gibi değişiklikleri kolaylaştırır
  3. Diğer insanlarla çalışmak da daha kolay olacaktır, çünkü genellikle MVC desen çerçeveleri kullanımına alışkındırlar

Kendi çerçevenizi oluşturabilirsiniz, ama kesinlikle tavsiye etmem. Karmaşık, zaten çok iyi çerçeveler var ve muhtemelen eksik bir özellik bulamazsınız. Ayrıca, tamamen yeni bir özellik yapmak zorunda kalmadan, onlara kendi özelliklerinizi eklemenin yollarını sağlarlar.


2
+1 için PHP ile rahat olduğunuzda, bir çerçeve kullanmaya başlayabilirsiniz. 3. noktanız ancak çerçeveler birbirine çok benziyorsa iyi sonuç verir. "Birkaç farklı olanı yoğun bir şekilde kullanmadan önce bir çerçeve oluşturma"
ifadesini eklerdim

8
"Bunları daima kullanmalısınız" ifadesine kesinlikle katılmıyorum. Her proje için uygun değildir ve genellikle değişiklikleri daha zor hale getirir . Kamu hizmetleri çerçevelerden çok daha değerlidir.
Nicole

@NickC için +1, daha fazla katılamadım. Bazı çerçeveler , dinamik ve kolay bir şekilde değiştirilebildiğini iddia ediyor, ancak o zaman belirli bir noktaya ulaşıyorsunuz ve yapamıyorsunuz. Bu tür şeyler hakkında çok şey söyledim :)
Steve Hill

MVC'nin, doğru kullanıldığında diğer kişilerin kodunuza daha az öğrenme eğrisi ile adım atmasına izin veren çok iyi bir ortak zemin olduğunu kabul ediyorum. Ancak MVC orada parlayan yıldız, çerçeve (veya eksikliği) sadece uygulama.
Tim Post

Bütün bunlar teorik ve pratikte işe yaramıyor. PHP çerçevelerinin tüm bunları daha zor hale getirme olasılığı daha yüksektir. Sıfırdan yazılan ortalama başvuru için yaklaşık beş yüz ila beş bin satır çerçeve kodu gerekir. Bu yaklaşık bir haftalık çalışma ortalamasıdır. Bundan daha büyükse, muhtemelen bir kütüphane yazıyorsunuz veya bir iç platform oluşturuyorsunuz.
jgmjgm

9

Çerçevesiz birkaç sayfa oluşturun ... temel olarak deneme yanılma yoluyla kendi çerçevenizi yazmaya başlayacaksınız. Bunu yaptıktan sonra bir çerçeveye geçin ve ne kadar zaman kazandığınızdan keyif alın. Kendi çerçevenizi oluşturmaya çalışmak size bazı şeyler öğretebilir ve zaten orada olan çerçeveleri takdir etmenize yardımcı olacaktır.

PHP'ye ilk girdiğimde, çerçevelerin karmaşık bir zaman kaybı olduğunu düşündüm. Şimdi, basit projeler için bile CodeIgniter kullanıyorum. Çalıştırmak ve çalıştırmak için yaklaşık 1 dakika sürüyor, halihazırda kullanabileceğiniz bir sürü harika kütüphaneniz var. Ve daha önceki bir afişin de belirttiği gibi, çoğu çerçeve genişletilebilir, böylece istediğiniz işlevselliği her zaman ekleyebilirsiniz.


2
Ancak daha sonra çerçeve içindeki kodun tam olarak istediğim gibi olduğundan nasıl emin olabilirim? Yani her programcının kendine özgü bir tarzı var, değil mi? Çerçeve hakkında ne !!
Goma

1
@Goma Dil ne olacak? Henüz her şeyi istediğim gibi yapan bir tane bulamadım. Çerçeve sadece çok, çok benzer bir şey ekliyor (umarım biraz daha yüksek bir soyutlama seviyesinde). Cidden, kodlama “her şeyi tam istediğim gibi göstermek / davranmak / olmak” ile ilgili değildir. Yararlı bir şey yaratmakla ilgilidir, kod sadece kendimize yüklediğimiz sorumluluktur, çünkü faydalar ilk etapta bu koda sahip olma maliyetinden daha ağır basar.
Christopher Creutzig

Ve şimdi @TaylorOtwell Laravel'in yaratıcısı ...
Hos Mercury

4

Gibi Niphra dedi bir çerçevede olmadan PHP kullanabilirsiniz zaman, sadece bir çerçeve kullanmaya başlamak (olduğunu, access veritabanı, gönderme başlıkları ve içerik, dize işleme, veri işleme, vs.). Sorularınız söz konusu olduğunda:

  • Ne zaman CakePHP gibi bir PHP çerçevesi kullanmam gerekir? Projeniz birkaç PHP dosyasının ötesine geçtiğinde; mantığı farklı öğelere güçlü bir şekilde ayırmaya başladığınız ve modülerleştirme / paylaşma işlevselliği (oturumlar vb.), bir çerçeve kullanmanız gereken zamandır.

  • Bu ve diğer benzer PHP çerçevelerinin bana sunduğu şeyler nelerdir? Soyutlama; veritabanıyla doğrudan etkileşimde bulunmak yerine, veritabanınızdaki verileriniz arasındaki yapıyı ve ilişkileri yönetmek için bir Nesne-İlişkisel Eşleme (ORM) kullanabilirsiniz. Birçok dilde çoğu çerçeve, uygulamanızın veritabanı katmanıyla etkileşimi kolaylaştırmak için ORM'ler sağlar. Benzer şekilde, çerçeveler genellikle kullanıcı etkileşimine yanıt verme katmanlarını ayırır. En yaygın ayırma, kısa olarak veritabanı modelini Model'e (birçok durumda ORM'ye bir arayüz) bağlayan, istekleri işleyen ve Modeller ile Kontrolöre Etkileşen Model Görünümü Kontrolörü (MVC) paradigmasıdır. gerçek HTML / PDF / resim / vb oluşturma. Görünüm. Çerçeveler genellikle yönlendirme (istek URI'sının karmaşık işlenmesine izin vermek için) gibi başka araçlar sağlar (EG: İsteği eşleme "http://example.com/users/1 "denetleyicisine, daha sonra kullanıcı Modelini 1) kimliğiyle ve oturumların ve diğer temel yapıların soyutlamasını arayan Kullanıcılar.

  • Profesyonel olmak için bir çerçeve kullanmak gerçekten önemli mi? Şart değil; çerçeveler hayatı kolaylaştırır; ancak profesyonel olmak için birini kullanmak zorunda değilsiniz. Çerçeveler kullanışlı soyutlama ve standartlaştırma sağlar, ancak çoğu durumda bir gereklilik değildir.


3

Bazı cevapları okuduktan sonra, hangi çerçeveyi kullanacağınız ya da kullanacağınız (profesyonel olarak) kullanıp kullanamayacağınız konusunda çok fazla seçeneğiniz olmadığını söylemek isterim. Seni korkutmak istemiyorum, ancak bir kerede birden fazla çerçeve kullanarak bir çerçeveden diğerine geçmesine izin vermek için yeterince PHP anlayışı oluşturmanız gerekecek.

CakePHP gibi bir PHP çerçevesini ne zaman kullanmalıyım?

Bunun evrensel bir cevabı yok. Bir profesyonel olarak, belirli sorunları çözmekle görevlendirileceksiniz ve bu, özellikle bir müşterinin belirli bir talebi varsa, her bir projenin ne zaman ve ne olduğu için belirleyici faktör olacaktır. Ancak genel olarak konuşursak, kendi çerçevesi olan (Wordpress veya PHPBB gibi) önceden var olan bir uygulamayı değiştirmedikçe veya genişletmedikçe, PHP ile her zaman bir tür çerçeve kullanırsınız.

Bu ve diğer benzer PHP çerçevelerinin bana sunduğu şeyler nelerdir?

Direğin dediği gibi, soyutlama sunarlar. Bunun anlamı, ortak, çok adımlı prosedürler almaları ve bunları mümkün olduğunca basit ve akıcı hale getirmeye çalışmasıdır. Kısacası, ortak görevler için adil su çözümleri sunmaya çalışıyorlar.

Profesyonel olmak için bir çerçeve kullanmak gerçekten önemli mi?

Genel olarak konuşursak, hayır profesyonel olmak için bir çerçeve kullanmak önemli değildir . Ancak gerçekçi olarak, en az birkaç ortak çerçeveye aşina değilseniz, çok fazla kariyeriniz olmayacak. Çerçevesiz PHP, std kütüphanesi olmayan C ++ gibidir. Buna ihtiyacınız yoktur ve doğrudan dil olmadan daha fazlasını yapabilirsiniz, çünkü doğrudan dilin alt düzey builing-block işlevini kullanacaksınız, ancak aynı şeyi yapmanız çok daha uzun sürecektir.

Ve beğendiğim özellikleri sağlamak için kendi çerçevemi oluşturabilir miyim?

Evet. Aslında, istemeden de olsa muhtemelen bunu yapacaksınız. Bununla, geniş kapsamlı bir yap-yap çerçevesini kastetmiyorum, ancak daha çok, görevleri yapan temel işlevlerin ve komut dosyalarının ortalama bir çerçeve tarafından işlenecek kadar yaygın veya genel bir araç çantası gibi. Mine temel olarak birkaç farklı kıvrılma ve akış / soket yardımcı programına sahip çeşitli dosya sistemi, işlem işleme ve rex-ex tid-bitlerinden oluşur.


1

Yıllarca bir veritabanıyla konuşmak ve çevrimiçi API'lerle konuşmak için kendi yöntemlerimi hackleyen bir kişiden ortak olan ve şimdi sadece çerçeveleri kullanmaya başlıyorum, mümkünse yaptıklarını en azından anladığınız zaman kullanın.

Bir veritabanıyla ilk kez çalışırken RedBean için hemen atlamayın , önce DB ile manuel olarak çalışın. Bu şekilde DB'ye gerçekten getirdiğiniz ve yaptığınız şey hakkında kapsamlı bir anlayışa sahip olursunuz, bu da ölçeklenebilirliğe gerçekten yardımcı olabilir. Ayrıca, kullandığınız çerçeve yapmanız gereken bir şey yapmadığında kendi çözümünüzü de yapabilirsiniz.

Ne olduğunu anladıktan sonra, bir çerçeve kullanın! İşleri çok daha kolay hale getiriyor. Daha sonra bir sorgu depolamak sonuçları üzerinde döngü ile crazyness mysql_fetch_assocTek bir çağrı düşürüldü, bütün kayboldu: $book = R::load( "book", $id ). Çok daha üretken olacak ve gelecekteki hataları düzeltebilir veya gelecekteki özellikleri daha kolay ekleyebilirsiniz.


1

Çerçevenin sizin için ne yaptığını ve bunun neden iyi (veya kötü) olduğunu bilecek kadar iyi bildiğiniz bir çerçeveyi kullanın.

Bir çerçeve, yaptığınız şeylerin bazı ayrıntıları hakkında endişelenmenize gerek kalmadan araçlarınızla (dil, veritabanı) biraz daha hızlı çalışmanıza izin veren bir tür meta araçtır; araçlar.

Olmak istemediğiniz şey, araçları yerine çerçeveyi öğrenmeniz ve bir şeyler yapmanın belirli bir yoluna kanalize olmanız ve sonuçta temeldeki diller ve kavramların ustalığını almamanızdır - bu bir bir koltuk değneği değil.


1

Kendinizi aynı şeyi tekrar tekrar yaparken bulduğunuzda, etrafınıza bakın ve kendi başınıza yapacağınız aynı gereksiz şeyleri yapan bir çerçeve olup olmadığına bakın. Yutturmaca nedeniyle sadece bir çerçeve kullanmayın. Şahsen CodeIgniter ve Rasmus Lerdorf'un "no-framework PHP MVC framework" i beğendim http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html


Her türlü yönetim / yayın sistemine kolayca taşınamayan çoğunlukla statik (ve büyük) sitelere yeni özellikler eklemenin acısını hafifletmek için birkaç 'çerçeve çerçevesi' yazdım, böylece kullanımları var. Ama yepyeni bir proje için kendimi devretmem (sadece bir çerçeve çağrıldıysa CI kullanırdım).
Tim Post

@Tim Post Bu sorunun hiçbir zaman siyah beyaz cevabı yoktur. Her şey eldeki projeye bağlı, orijinal yazı belirli bir proje hakkında ayrıntı vermedi.
programcı

1
Görünüşe göre bir çerçeve zealottan aşağı oy aldım, güzel!
programcı

Twasn't me :) Birisi, yayınladığınız bağlantıya gerçekten bu konuda ayrıntılı bilgi vermeden tepki gösteriyor olabilir.
Tim Post

@Tim Post Heh! Bu yüzden bu iki yorumu da birbirinden ayırdım. : D
programcı

-1

X, y veya z çerçevesini neden kullanacağınızı dikkatlice düşünmenizi tavsiye ederim. Her çerçeve sadece işlevsellik sağlamakla kalmaz, kendinizi uygulamak zorunda değil, aynı zamanda bir düşünme biçimidir. Sadece Spring, JEE, Rails veya Django'ya bakın. Bir web uygulamasını kısa sürede durdurmak için yeterli dört çerçeve.

Ancak dördü de web uygulamalarının nasıl oluşturulacağı konusunda kendi düşüncelerini geliştiriyor. İhtiyaçlarınıza uymuyorsa veya lezzetinize uyuyorsa, işleri daha da ileriye taşımakta zorlanacaksınız.

Bu çok radikal bir karşılaştırma oldu, ancak belki de küçük bir kütüphane oluşturmak ihtiyaçlarınızı daha iyi karşılar. Ancak çerçeveleri bilmek kesinlikle daha büyük ekiplerde çalışmanıza veya yeni işler bulmanıza yardımcı olacaktır, çünkü bu bir bütün olarak yazılım geliştirmeyle ilgilendiğinizi gösterir.


-2

Başlangıçtan itibaren çerçeveleri kullanmak her zaman iyidir. Kodun yeniden kullanılabilirliğini, daha iyi okunabilirliğini ve geliştirme süresinden biraz tasarruf etmesini sağlar.

PHP konusunda çok tecrübeli değilim, ancak herhangi bir çerçeve kullanımını teşvik ediyorum.


Neden aşağı oy?
Pierre Pretorius
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.