Symfony öğrenmek için iyi bir çerçeve var mı?

17 Cevap php

Ben herhangi bir kamu çerçeve (her zaman kullanılan iç çerçeveler, ya da benim kendi) hiç kullanmadım. I Symfony bir lot of tutorials and nice documentation vardır ve CRUD birden fazla dil kullanımı için her şeyi var gibi görünüyor olduğunu görüyoruz.

Eğer bir blog * daha karmaşık bir web sitesi oluşturmak için iyi bir çerçeve olduğunu düşünüyor musunuz? Değilse, başka bir alternatif nedir?

* Finansal verileri yönetmek için oturum açma ile Web Sitesi.

17 Cevap

Symfony 2

Symfony2'nin Symfony 1 ile sorunların çoğu ele almıştır.

  • Bu proje kurgusunda nasıl etrafında bir esneklik sağlar.

  • Bu çok hızlı ve diğer web çerçeveler karşılaştırılabilir

  • Itmek ve Doktrin desteklenir hem ama zorlanmaz. Yaratıcısı, bir ORM olarak isterlerse kullanmayı tercih edebilirsiniz. Ya da hepsi hiçbiri.

  • Symfony2 bileşenlerinden bazıları şimdi böyle Drupal ve PhpBB gibi büyük projeler yürütülmektedir.

Symfony 1

Symfony 1 gerçekten iyi görünüyordu, ancak birkaç sınırlamalar vardı.

Bu cilalı ve iyi belgeleri vardı. Onunla özel olarak yanlış bir şey yoktu. Bu sadece her şeyi olması gerektiğini daha zor olduğunu görünüyordu.

  • Aktif kayıt deseni ile başlamak güzel oldu, ama sonunda sadece bir performans darboğazı başlandı.

  • Tahrik herhangi karmaşık SQL sorguları oldukça zorlaştırdı. Creole bir OO şekilde quesries "inşa" izin, ancak elle SQL yazma çok daha kolay olurdu.

  • (Symfony YAML seviyor) kod üzerinde yapılandırması için güçlü bir tercih vardır. Bu, sürekli hangi yapılandırma dosyası ve hangi seçeneği değiştirmek gerekir arıyor gerekir anlamına gelir. Eğer (yanlış ebeveyn düğümün altında örneğin) yanlış düzeyinde yapılandırma tanımı sopa varsa o zaman işler çalışmıyor neden bilmek için gitmiyoruz.

  • Dokümantasyon biraz öğretici odaklı görünüyordu. Genellikle ben sadece gerçekten sağlam bir referans istedi. Bu genellikle bir yapılandırma tanım arayan ilgilidir.

  • Çerçeve yapısı oldukça serttir. Bir şeyler tasarımcılar amaçlanan tam yol uygulamak zorunda.

  • Çerçeve, oldukça yavaş olarak sona erdi. Biz trafik ılımlı bir miktar (belki 50.000 uniques bir gün) işlemek için çalışıyorlardı ve biz kullanılan sunucu sadece alamadı.

Bu konuların çoğu birkaç Symfony projelerinden sonra kaybolur. Ben o zaman muhtemelen CodeIgnitor bakmak istiyorum, yeni bir çerçeve aramak için olsaydı, bu çok daha basit ve hafif olması gerekiyordu.

Symfony sonra bir MVC deseni uygulamak için çok küçük bir çerçeve yazma sona erdi. Benim belirli sorunları maç çerçeve kodu gelişmeye gibi ben çok daha iyi beğendi. Bu gerçekten yapmak için "doğru" bir şey değil, ama benim için çalıştı. Ben yaklaşık yarım düzine projelerde kullandım ve ben ekledim ve hafif tutmak için kodumu kesilmiş.

Evet, bu büyük bir çerçevedir. Çeşitli karmaşıklığı çeşitli siteler oluşturmak için kullandım. Bir tek sayfalık bir avuç ve bir iletişim formu ile küçük işletme sitedir. Başka kullanıcılar ve on ayda işlemlerin binlerce binlerce karmaşık bir dosya teslim sitedir. Benim müşteri birkaç onu kimse kullanmak 100k üzerinde kullanıcıya sahip.

Orada iyi bir kullanıcı topluluğu olduğunu irc genellikle yararlı insanlar var, ve ortak görevlerini kolaylaştırmak için çeşitli eklentileri vardır. Bu gerçekten güzel bir yönetici jeneratör bulunmaktadır. ORM (Hareket) biraz söz olduğunu, ancak ortak veritabanı özellikleri-kısıtlamaların çoğu sağlar, vb yabancı anahtarlar, indeksler, 1.1 'Form nesneleri güzel.

En büyük şikayetleri: o ağız ve dizin-ağır. Aşırı kullanım yapılandırma dosyaları anlamaya şeyler biraz zor yapabilirsiniz.

Kesinlikle önerilir.

@ Daok

Yaml sadece şema tanımlamak için ORM kullanılır. Gerçekten herhangi bir davranışını tanımlamak değildir. Tahrik oluşturulan koduna dayalı ve modelleri oluşturmak için schema.yml kullanır.

Bir de OS X üzerinde çalışır.

Bu da oldukça iyi bir önbelleğe alma tabakası vardır.

Iyi belgelerine sahip gibi görünüyor ama bunu takip çalıştığınızda detayları, bu bir kabus.

Symfony Rails Ruby makyaj aynı tasarım desenleri hakkında kullanan iyi bir çerçeve olduğunu, ama kendi artıları ve eksileri vardır çünkü, "Raylar üzerinde PHP" değil.

Doktrin ikinci ORM olan Symfony 1.2 gibi, onunla birlikte paketlenmiş oluyor. Eski sürümleri için eklentileri vardır.

Bütün YAML iş hakkında: XML yapılandırma dosyaları veya hala diğer dosya biçimini tercih ederseniz, YAML o içeri takabilirsiniz varsayılan biridir.

Son ama en az değil, sen (hala bunu yapılandırmak zorunda) varsayılan yapının patlak verebilir. Belgeler (Symfony Kitap cf) olduğunu açıkça belirtmektedir.

Ultimatively, o tadı ve kişisel tercih meselesi. Benim tavsiyem Symfony Kitap okumak (Eğer proje web sitesinden ücretsiz olarak alabilirsiniz) ve örnek projeyi takip etmek denemek için olur. İstersen, bunu kullanın. Değilse, başka bir şey deneyin.

Burada ben sadece buldum bazı bilgiler:

  • MVC tasarım odaklı
  • ORM Doktrini veya Propel kullanarak
  • Yapılandırması için Yaml dosyalar
  • Linux ve Windows üzerinde çalışacak
  • Düzeni ve şablon kullanın

Symfony PHP 4 ile çalışmıyor. Sistemleri hosting PHP4 özgü uygulamalar Symfony kullanmak mümkün olmayacaktır. PHP4 bir gereklilik değilse, Symfony çok iyi bir seçenektir.

Biz son 6 ay boyunca iş yerinde sf kullanarak oldum ve şimdiye kadar oldukça onunla etkiledi. Orada etrafında inşa oldukça sağlıklı bir eklenti geliştirme topluluğu ve ana çerçevesi oldukça hızlı bir şekilde gerçekten gelişmekte olan gibi görünüyor. Aralık ayında geliyor 1.2 sürümü son kullanıcı için esneklik reklamları büyük bir ORM katman için Propel veya Doktrini kullanarak çerçeve resmen agnostik yapacaktır. Ilk öğrenme eğrisi kesinlikle alışık almak zorunda "symfony yol" olduğu gibi biraz dik, ama Ruby gibi diğer tam bir yığın çerçeveler, gibi grok kez ne onun tüm ben gelişme oldukça hızlı olması bulmak konusunda.

Bu kadar ile kod kolay ve çok iyi belgelenmiş çünkü ben şahsen CodeIgniter'ı seviyorum.

Ben CakePHP'ye, CodeIgniter, ZendFramework ve Yii denedim. Hepsi artıları ve eksileri var, ama çok esnek olduğu için ben farklı bahsettiğim diğer çerçeveler, size gereken sadece bileşenleri seçebilirsiniz, ben Symfony en sevdiğim itiraf etmeliyim. Eh, adil olmak, aynı zamanda Zend kütüphanelerini kullanabilirsiniz.

Ayrıca, Symfony iyi belgelenmiş ve büyük bir topluluk vardır. Onun öğrenme eğrisi nispeten dik bir öğrenme eğrisi vardır, ancak çalışmak için bir yol hakim zaman, gerçekten yararlı olduğunu göreceksiniz.

Ben framework ... CakePHP ve Zend daha popüler görünmesi kullanılır ama Symfony ilginç görünüyor olan projenin bir çok görmüyorum, çünkü ben hala emin değilim ...

Ben Symfony benimseyen bir engel olarak app karmaşıklığı görmüyorum.

Ben herkes tüm büyük çerçevelerin muhtemelen gerçek yüksek performanslı nedenlerle ama aynı s için Symfony seçsin sanmıyorum. Biz absoutely hiçbir performans sorunları vardı dedi sahip.

Zend karşılaştırmak için muhtemelen en iyi değil, Symfony çok tam bir yığın çerçeve, sen şeyleri Symfony şekilde yapmak için hazırlıklı olmak gerekir. Ben bunu kullanmak için bir zevk bulundu. Ben başlarken önce tam olarak resmi symfony kitap (online) okumanızı tavsiye ederim. (Symfonys ORM) itmek öğrenmek için biraz sinir bozucu oldu ama öğrenme eğrisi üzerinde bir kez olsun iyi çalışır.

Onun gerçekten yararlı şeyler ile dolu ve daha iyi daha bunu kullanmak olur.

Gaurav belirtildiği gibi, Symphony PHP4 desteklemez. Eğer yaptığı iyi bir PHP çerçevesinde arıyorsanız Kod Igniter kontrol etmek isteyebilirsiniz.

Alternatifler için ben CakePHP'ye kullandım. Son 10 ay içinde ben iç kullanım için onunla bir kaç uygulamalar blog düzeyi karmaşıklığı uygulamaları inşa ettik. Bunun için olağanüstüydü. Içine almak kolay, bir çok yeni php gerekmez, docs terbiyeli ve genellikle posta listesinde bulundu orada bir cevap bulmak için başarısız.

Ben Kek vardı asıl sorun ben çok kendi ORM üzerinde kontrol ve onlar grup hükümler için destek ilavesi ile son zamanlarda bu alanda gelişmiş olmasına rağmen ben hala belirtemez açıkça katılır vardı gelmiyordu oldu. Bu orm da ilgili modeller veri almak için sorgular bir demet yapmak gerekiyor karar verir çünkü düşük performans olabilir durumlara yol açar. Yoksa http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/ hangi çalışıyor ama o tür çirkin böyle kesmek kullanabilirsiniz. Uygulamalar büyümeye başladı ve daha fazla modelleri daha fazla ve daha sık durum içine koşmaya başladı şema eklenmiş böylece daha fazla özelliklere sahip bir ORM desteklenen bir şey (Ben kek ile diğer isses vardı ama geçmek için karar çoğu ) oldukça küçük. Bir süre için beni irked ama ben kek sadece benim için doğru aracı mükemmel bir araç olmadığı kavramı ile yerleşti ettik.

(Ben sadece CodeIgniter dokümanlar yağsız ve screencast izledim) Zend ve esas Symfony'de baktı. Bu güç ve kullanım kolaylığı doğru dengeyi var gibiydi çünkü Symfony toplayıp sona erdi. Bu Doktrini ve Propel, eklentileri bir sürü gidecekseniz, ve dokümanlar bir sürü kullanabilirsiniz. Ben düzenlemek lazım ama benim için sürpriz ben tüm bu çok yapılandırmak zorunda değil sanıyordum milyon yml dosyaları ile başa çıkmak için hazır kadar buckled. Zend oldukça güçlü görünüyor ama benim şimdiki projeler için Do It Yourself biraz fazla görünüyor. Ben anlaşma imzaladı, böylece ben de çok fazla sorun olmadan benim symfony projeleri kapsamında Zend kütüphanelerini kullanabilirsiniz okudum kadarıyla.

Yani seçtiğiniz Özetle, sizin ihtiyaçlarınıza bağlı olacaktır. Kendinizi karmaşık sorguları yaptığını görürseniz, muhtemelen çok iyi bir veritabanı kütüphanesi, spor veya en azından kolayca (Ben CodeIgniter örneğin doktrin kullanabilirsiniz anlamak) Çerçevenin incelikler vazgeçmeden bir alternatif birini kullanmanızı sağlar birini seçmelisin.

Ben herkes sadece Symfony framework upsides ama ne olumsuz yanları hakkında konuşurken bulabilirsiniz. Benim kişisel deneyim ben geliştirme ortamında beyninizi yiyip olacak Symfony2'nin önbellek sistemi nefret. Bu gelişme çok yavaş ve tabii ki çok can sıkıcı.

Bunun yerine size önbelleğini temizleyin ve benzeri 10 saniye bekleyin ve izin değişim sorun gelir size mac çalışıyorsanız ve sonra tekrar beklemek terminaline kafa gerekir dosyasında bir değişikliği kaydetmek her zaman değişiklikleri görmek için sayfayı yeniden olamaz Birkaç saniye aslında değişikliği görmek için.

Gerçekten size aynı uygulamayı varsayarak symfon2 üzerinde bir uygulama geliştirmek için kullanabileceğiniz, aynı zamanda üzerinde Zend Framework kullanarak iki uygulama geliştirebilirsiniz konuşma.

Yanında orada diğer downsides da vardır ama bu Symfony2'nin en kötü bölümünü düşünüyorum. Bu gelişme için optimize hiçbir zaman. Bir düzgün geliştirmek değil eğer nasıl üretiminin optimize çerçeve olarak mantıklı mı?

I YII CakePHP, Zend ve Senfoni tüm denedikten sonra söyleyebilirim.

It has the features like MVC,DAO/ActiveRecord,caching, authentication and role-based access control, scaffolding, testing and so on. It is light weight and has powerful caching support. Security is a part of this frame work. It includes input validation, output filtering, SQL injection and Cross-site scripting prevention. Also Yii is much faster because it is using lazy loading technique. It does not enable a functionality until or unless that has been invoked for the first time. For example it does not create an object unless the object is called for the first time. Other frameworks suffer from the performance hit because they would enable a functionality no matter it is used or not during a request.

Yii offers you the joy of development in it's true sense with freedom to tweak each aspect without the weird magic that's intended to be kept hidden like in the case of say CakePHP.

Sonunda sanırım sadece kişisel görüşüm.

Zend üstün görünüyor, ama gerçekten belgelerinde yoksun.