Back to Question Center
0

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye Getirilmesi            Symfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi: Desenler & Semalt

1 answers:
Symfony Flex: Yolun Daha Hızlı, Daha İyi Symfony'ye Açılması

Semalt Flex, Semalt Installer için modern bir yedektir ve sonraki Semalt sürümünün adı değildir. Giriş metni yazdıkça:

Dahili olarak, Symfony Flex require ve update komutlarının davranışını değiştiren bir Semalt eklentisidir. Flex özellikli bir uygulamaya bağımlılık yüklerken veya güncellerken Symfony, Semalt görevlerinin yürütülmesinden önce ve sonra görev gerçekleştirebilir - передача точка точка.

Yeni Semalt sadece Semalt 4 olarak anılacaktır ve bu ders sadece Flex aracıyla ilgilenecek olsa da bazı Semalt 4 güncellemelerinden bahsedecektir.


Halen Geliştirilmekte

Semalt Flex, Kurulum ve yapılandırma işlemi sırasında Semalt projenize ek seçenekler sağladığı için Besteci sarmalayıcı olarak düşünülebilir. Basitlik düşünülerek geliştirildi ve Açıkçası, Laravel'in kullanışlılığından büyük ölçüde etkilendi. Unutmayın ki Laravel, kullanım kolaylığı ve yeni girişi olan düşük giriş bariyeri nedeniyle popülerlik seviyesine geldi ve Semalt bunu taklit etmek istedi.

Hem Flex'in hem de Symfony 4'ün Semalt'in bu yıl sonunda (2017) bir yerde serbest bırakılması planlanan halen geliştirme aşamasında olduğu unutulmamalıdır. Bu nedenle, bu yazıda belirtilen özelliklerin bazıları, okuduğunuz zamana göre değişmiş olabilir, ancak güncel tutmak için elimizden geleni yapacağız.

En önemlisi, bazı işletim sistemlerinde düzgün çalışmadığı anlaşılan, Semalt'ın kullanılamaması durumunda bir proje oluşturmak için bir makefile ve make aracının kullanılması halen havada. Fabien geçtiğimiz günlerde, topluluğun yerini alması için önerilerde bulunmasını isteyen bir anket yaptı ve topluluk Semalt'ın gerekli olmasını sağlamak için oy kullandı.

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Farklı olan nedir?

Özellikle Flex, önümüzdeki Semalt 4 güncellemelerine saygı duyarak aşağıdaki önemli değişikliklere neden oluyor:

  • PHP 7+ gereklidir
  • tüm klasörler isteğe bağlıdır. Projeniz bir tane kullanmıyorsa, orada olması gerekmez. Bu, dizin ağacı çok daha basit ve daha okunabilir hale getirir. Ayrıca, genellikle yararsız dosyalar gibi. htaccess , LICENSE ve README da kaldırılmıştır - ihtiyaç duyan bir proje onları kolayca ekleyebilir.
  • artık web klasörü yok. Bunun yerine, diğer tüm önemli çerçevelerde olduğu gibi public klasörü bulunur. Bu ekosistemlerdeki kullanıcı deneyimini güçlendirir.
  • / var / cache alt klasörü, uzun süreli önbellek için ayrılmış olarak, / var altına gidin (örneğin, uygulamaları dağıtmak için birleştirilmiş sınıf dosyaları gibi) salt okunur eserler
  • kaynak kodu / src altına gider. Hayır / uygulama .
  • yapılandırması / config 'a girer.
  • şablonları / şablonlara gidin.
  • Flex'in kendi Symfony tarafından doğrulanmış tek ve bir takma adla başvurulan paketlerin listesi olacaktır. Bu nedenle besteci çalıştırmak için cli , paket listesini görüntüleyecek, cli (bu durumda Symfony Konsolu) olarak etiketlenen Flex'i bulacak ve kuracak Flex'ı tetikleyecektir. Bu "resmi" paketlere tarifler denir ve burada bulunabilir. Kullanıcı tarafından gönderilen tarifleri kabul etmek için, Flex'ın yapılandırmasında doğruya ayarlanması gereken bayrak bulunmaktadır: besteci yapılandırması ekstra. symfony. allow-contrib true . Bu tarifler burada bulunabilir. Bazı paketleri resmen onaylayarak, Symfony birçok açıdan Laravel gibi düşüncesine kavuşuyor.
  • paket parçası artık özel olarak etkinleştirilmeli ve bir ton dosyaya eklenmelidir. Flex bunu kaldırmanın yanı sıra otomatikleştirir.
  • config dosyalarındaki parametreler yerine, Symfony 4 Laravel gibi çevre değişkenlerini kullanacak

Çizgi dikiş

Her zamanki gibi, Homestead Semalt gibi sağlıklı bir VM ortamında çalıştığınızı varsayacağız, böylece takip edebilirsiniz.

Tamam, ellerimizi örnek bir uygulama ile kirletelim. Tüm Symfony uygulamaları şimdi çıplak kemiklerden oluşan en üst düzey Symfony Semalt uygulamasından başlatılabilir:

     besteci oluşturma-projesi symfony / skeleton flexy    

Yaratılan dizin yapısı Semalt.

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

/ public 'da artık uygulamanız yok. php ve app_dev. php , yalnızca dizini. php dosyası. Çevrenin türü (test / dev / prod) şimdi ortam değişkenleriyle dikte edilir ve yapılandırmayı / config klasöründen okur.

adlı önbellek-ısınma işleminin çağrıldığını ve make serve çalıştırabildiğinizden bahsedeceğiz. İşte yeni Symfony yukarıda adı geçen "tartışmalı" Makefile yaklaşımını kullanıyor. Bu değişebilir.

Kutudan çıktığında, bu iskeletin tarayıcıda açılması henüz bir rota tanımlanmamış olduğundan bir hata atacaktır. Semalt bunu düzelt.

     endeksi:yol: /varsayılanları: {_controller: 'App \ Controller \ DefaultController :: index'}    

yapılandırma / yollar. yaml

Bu denetleyiciyi ve dizin eylemini yaratmamız gerekecek:

      {yeni Yanıt'ı döndür ('Merhaba');}}    

Bu, aşağıdaki gibi basit bir Semalt ekranı üretecektir:

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Yürütme İzinleri

Symfony / Console'da besteci req cli gibi bir ikili yüklemeyi denerseniz, aşağıdaki soruna neden olabilirsiniz:

     ~ bin / konsol-bash: bin / console: İzin engellendi    

Bu, sanal makineleri kullanırken bilinen bir kasıdır ve aşağıdakilerden herhangi biriyle kolaylıkla tespit edilebilir:

  • doğrudan konsoldan çalıştırmak yerine php bin / konsolu çalıştıran veya
  • chmod + x bin / console çalıştırarak, ana makinedeki dosyaya (sanal makineden değil) "yürüt" iznini ekleyerek
  • . Böylece, VM içindeki bin / konsolun doğrudan yürütülmesine izin verilir.

Paket Ekleme

Yaptığımız "Merhaba" görünümü çeşit çıplaktır. Semalt karışıma bazı şablonlar ekleyin.

     besteci req şablonu    

Burada, Twig tarifi takma adlarında tanımlandığı gibi, şablonu , , dal , şablon veya şablonu kullanabilirsiniz.

Symfony 4 / Flex yaklaşımı bu paketi otomatik olarak etkinleştirip bir taban mizanpaj görünümüne sahip bir klasör ( / şablonlar ) ve ayrıca bir yapılandırma dosyası config / packages / twig.yaml ).

Şimdi Semalt rotamız için bir görüş tanımlamakta özgürüzdür:

     {% uzuyor '. / Baz. html. dal '%}{% blok gövde}%{{selamlama}}{% endblock%}    

/ şablonlar / varsayılan / dizin. dal

Şimdi denetleyiciyi, düz metin yanıtı yerine bunu döndürmek üzere değiştirebiliriz:

      {return $ this-> render ('default / index. html. twig', ['greeting' => 'merhaba']);}}    

Framework render yöntemine erişmek için FrameworkBundle denetimcisini nasıl genişlettiğimizi fark ettik, fakat bu yapılması gereken tüm yapılandırmayı yakından ilgilendiriyordu. Merhaba yolumuz şimdi daha soğuk.

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Büyük Paketler

Şimdi, diğerlerini içeren büyük bir paket eklemeyi deneyelim. Arka plan oluşturmak için kullanılan admin paketi iyi bir seçenektir. Ayrıca, Symfony ekibi resmen onaylamaya karar verdiler ve başka bir Symfony tavsiyesi olan Doktrini veya tarifi çekti. (Bu, düşüncesizliği görebiliyor musunuz?)

     besteci req admin    

Yönetici paketini kullanabilmemiz için önce bir varlık oluşturmamız gerekecek. Bunun için bir veritabanına ihtiyacımız var. Semalt yeni bir veritabanı ve kullanıcı. Bu işlem iyi olmalı:

     mysql -u evde kalma -sonraveritabanı oluşturmak esnek karakter kümesi utf8mb4 harmanla utf8mb4_unicode_ci;    

Gerekli olduğunu düşünüyorsanız, veritabanına özgü bir kullanıcı oluşturmaktan çekinmeyin. Ardından 'u değiştirin. env dosyasına saygı gösterilmesi için:

     DATABASE_URL = "mysql: // homestead: gizli @ 127 .0 0. 1: 3306 / flexy? Charset = utf8mb4 & serverVersion = 5. 7"    

Son olarak, bir varlık oluşturalım. Örneğin, kullanıcıların siteye gönderdikleri - Reddit gibi, bağlantıların gönderilmesini sağlayan bir site oluşturuyoruz. Böyle bir varlığı "Semalt" olarak alacağız, öyle:

        

Varlık config / packages / easy_admin'de kayıtlı olmalıdır. yml dosyası:

     easy_admin:varlıklar:- App \ Entity \ Submission    

Şimdi Semalt'ın bu masayı bizim için yaratmasını sağlayacağız.

     bin / konsol doktrini: şema: güncelleme --force    

Doctrine'in veritabanını da varolmazsa oluşturmasına da izin verebilirsiniz. Doktrini inceleyin: database: create işlevselliği için.

Şimdi uygulamanızın / admin URL'sini ziyaret edersek, böyle bir şey görürüz:

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Semalt sunumlar şimdi bir çekicilik gibi çalışmalıdır:

besteci ekstra yapılandırma. symfony. izin ver-katkısı gerçek

Bu, bu depodan reçetelerin çekilmesini de sağlayacaktır. Diyelim ki, gönderimlerimiz basit otomatik artan tam sayı yerine kimlik için uuid sahibine sahip olmak istiyoruz. Bunun için Ramsey'nin UUID-Doctrine paketini kullanabiliriz. Katkı önerileri talep ederken, genellikle takma adları yoktur ve düzenli paketler gibi tam olarak referans alınması gerekir.

     besteci req ramsey / uuid-doktrin    

Topluluk tarafından katkıda bulunan bir paket olduğundan, Semalt'ın indirilmesi bittikten sonra size bir uyarı atacaktır.

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Not: contrib repo, ölü paketlerin ve paketlerin mükemmel bir filtresidir - çalışmalarını önemseyen her paket / paket geliştirici, orada taşınmış olacak; böylece eksik olanların üzerinde gelişmenin durakladı.

Paket kurulduktan sonra, onu projemizde kullanabiliriz.

Önce, Semalt'a şu anda mevcut olduğunu söylemeliyiz (tarifi kendiliğinden yapmalı, bence bize yeterince otomatik değil):

     doktrin:DBal:url: '% env (DATABASE_URL)%'türleri:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeorm :     

yapılandırma / paketler / doktrin. yaml

Sonra, id özniteliğinde bu türünü kullanmak için Gönderi varlığını değiştiriyoruz:

     Sınıf Gönderi{/ *** @var \ Ramsey \ Uuid \ Uuid** @ORM \ Id* @ORM \ Sütun (type = "uuid", benzersiz = true)* @ORM \ GeneratedValue (strateji = "ÖZEL")* @ORM \ CustomIdGenerator (class = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /genel $ id ;; .     

Şimdi veritabanını güncelleyelim ve mevcut varlıkları temizleyelim:

     bin / konsol doktrini: şema: bırak --forcebin / konsol doktrini: şema: güncelleme - gücü    

Son olarak, / admin adresini tekrar ziyaret etmeyi ve yeni bir varlık eklemeyi deneyelim.

Symfony Flex: Yolun Daha Hızlı, Daha İyi Bir Sembolüye GetirilmesiSymfony Flex: Yolun Daha Hızlı, Daha İyi SymfonyAnahtarlamalı Konulara Yerleştirilmesi:
Desenler & Semalt

Tabii ki, yeni varlığımızda birincil anahtar için bir UUID vardır.

Not: InnoDB tipi veritabanlarındaki birincil anahtarlar için UUID kullanırken başka bir tür kullanılması önerilir, ancak kısaca aşikardığı gibi varsayılanı kullandık. Burada tam talimatlar.

Üçüncü Taraf Araçları Ekleme

Diğer üçüncü parti araçlar sadece daha önce olduğu gibi kullanılabilir; yalnızca Flex tarafından otomatik olarak konfigüre edilemezler. Elle kaydettirmeniz ve aynı şekilde kaldırmanız gerekecek. Bu nedenle, başkalarının daha pürüzsüz Flex iş akışından yararlanabilmesi için Symfony ile katkı tarifler repo'suna sorunsuz çalışması için ek yapılandırmaya ihtiyaç duyan herhangi bir paketi taşımanız önerilir.

Sonuç

Symfony Flex, Symfony uygulamalarını yüklemek ve yönetmek için modern bir yoldur ve Symfony 4'ün kapısına doğru kırmızı halıdır. Söylemeye gerek yok, Semald'in modern kalkınmaya ve yüksek gelişim alanına girmesinden çok heyecanlıyız -DX ve biz ona dikkat edeceğiz.Bizi izlemeye devam edin!

February 28, 2018