Beberapa Komponen Symfony yang Diadopsi Drupal 8

Bagi para drupaler, ini hanya untuk asal tahu saja, (atau tidak perlu tahu) dan sama sekali tidak untuk mendorong mempelajari lebih jauh apa itu Symfony.

Perlu diketahui bahwa Symfony adalah framework yang berdasar PHP dengan mengikuti arsitektur MVC. Ini jangan dicampur-aduk antara Symfony Framework dengan Symfony CMS, karena framework itu berarti versi mentahan. Dan berikut ini beberapa hal yang diadopsi Drupal 8 dari Symfony :

- HttpFoundation dan HttpKernel
Dengan symfony maka drupal bisa tampil WSCCI (Web Services and Context Core Initiative), yang dimaksudkan supaya drupal bisa berjalan sebagai first-class REST server. Komponen yang diadopsi ini bertugas untuk menjalankan proses converting sebuah request menjadi respon dengan bantuan EventDispatcher. Sehingga mesin drupal menjadi simpel, fleksibel, kuat, mudah dikembangkan dan pemeliharaannya juga mudah.

- Routing
Komponen ini bertugas melakukan pemetaan sebuah request HTTP untuk menjadi sebuah set variabel konfigurasi. Pada kontek drupal 8 maka komponen ini merangkai (route) modul dan mendefinisikan file konfigurasi YAML yang menghidupkan modul tsb. Ini mencakup fungsi hook pada drupal versi lama.

- EventDispatcher
Diterapkan sebagai pola mediator (encapsulation) dalam sebuah cara yang simpel dan efektif terutama bila ada code yang tidak bekerja, ini membuat aplikasi ber-ekstensi tinggi. Hal ini lebih efektif dalam situasi yang bertujuan menyusun konsistensi program pada jumlah kelas yang sangat besar, sehingga menyebabkan komunikasi antar kelas sangat mudah dan simpel.

- DependencyInjection
Komponen ini terutama untuk menjalankan standarisasi dan sentralisasi objek yang dikonstruksi dalam aplikasi. Ini menjaga kemandirian masing-masing kelas dan supaya bisa saling berinteraksi (tidak terkunci antar kelas tertentu saja) sehingga masing-masing kelas itu bisa reusable dan unit-testable. Lagi-lagi ini adalah perluasan fungsi hook pada drupal versi lama, dan pada drupal 8 tidak ada lagi istilah hook.

- ClassLoader
Komponen ini menyediakan tool yang bersifat autoload classes dan cache lokasinya. PHP menggunakan mekanisme autoloading untuk mendelegasikan loading file pada kelas yang terdefinisi pada situasi dimana referensi sebuah kelas tidak sedang dibutuhkan atau sedang tidak termasuk (included). Symfony datang dengan autoloaders seperti PSR-0 Class Loader and MapClassLoader. Menerapkan komponen ClassLoader akan membuat pengembangan module drupal lebih mudah terutama ketika untuk menerapkan module_load_include dan dependensi lain. Lebih dari itu, ini membuat pengembang modul bisa dengan mudah memanggil kelas pada waktu kelas itu sedang berjalan (runing).

- YAML
Komponen YAML melayani secara integral bagian CMI Drupal (Configuration Management Initiative). Ini membuat module bisa terdefinisikan secara default setting konfigurasinya, dan selanjutnya site builders bisa melakukan perubahan (override) setting konfigurasi tersebut. Ini merupakan replacement dari module Features dengan improve yang lebih canggih dimana setting konfigurasi tersebut ditulis pada system file dan bukan pada database seperti pada drupal versi sebelumnya.

- Twig
Merupakan template engine untuk theme yang jauh lebih simpel dan aman. Twig ini dikembangkan oleh Fabien Potencier, yang banyak terlibat dalam mengintegrasikan symfony ke dalam drupal.

- Process
Komponen ini membantu perintah eksekusi dalam sub-proses dengan menggunakan jalur perintah antar-muka. Drupal 8 will use this to handle all activities that are command-line in nature.

- Serializer
Ini digunakan untuk mentransformasikan objek menjadi format spesifik seperti XML, YAML, dan JSON. Ini juga bisa untuk mengolah kerja dan tahapannya pada saat pembuataan node dan entity supaya bisa diolah pada tahap REST endpoint. Artinya sistem tidak bekerja secara totalitas, namun bekerja hanya pada poin yang diperlukan saja.

- Validator
Membantu drupal dalam melakukan validasi value dengan menggunakan Doctrine Annotations. Sebagai contoh: validating form submission, validating entities within Drupal, etc.

- Translation
Ini yang membuat module entity translation bisa dimasukkan dalam drupal core, tentunya dengan improve yang lebih canggih. Komponen ini menyediakan perangkat alat untuk load translation files, generate translated strings sebagai output, dan menggunakan generated outcome.

Komponen Pihak Kedua

Berikut ini komponen PHP dari pihak kedua yang bukan berasal symfony

- Assetic
Adalah sebuah Asset Management framework. Aset dalam drupal adalah seluruh file CSS, JavaScript, images, file media lain, metadata, dll. Aset ini termuat dalam konten terfilter supaya bisa dikompres dalam dump. Untuk manipulasi aset maka kita perlu mengaktifkan filter terkait. Ini akan memperingan ketika web drupal diakses.

- Composer
Ini adalah dependency manager untuk PHP yang memungkinkan untuk declare libraries yang diperlukan dan menginstall-kan untuk kita. Composer menjadi tulang punggung drupal karena :
= Secara sangat efisien meng-handel situasi dimana projek kita memerlukan beberapa libraries.
= Tidak hanya menghandel package yang memerlukan suatu library, bisa juga menghandel bila satu library ternyata memerlukan library yang lain.
= Composer secara otomatis memilihkan versi yang tepat untuk packaga atau library yang akan diinstalkan.

- Doctrine
Seperangkat alat yang digunakan untuk merekam (record) data dan database. Drupal menggunakan sebagian dari komponen itu yang disebut Annotations, yang menampilkan metadata tambahan untuk drupal. Ini sangat memudahkan ketika melakukan custom entity types.

- EasyRDF
PHP library ini bisa mengkonsumsi dan memproduksi RDF secara mudah, yang bisa membuat situs drupal memproduksi metadata dalam markup-nya, dan menyiapkan-nya sebagai semantic web.

- Guzzle
Ini adalah PHP HTTP client dan framework yang membantu drupal membuat request web menggunakan REST based web service calls. Ini membuat web site drupal lebih efisien.

- PHPUnit
Digunakan untuk standarisasi unit testing pada drupal core supaya memastikan core bisa berjalan secara benar sepanjang waktu, juga membantu pengembangan dalam membuat modul secara benar, lebih jauh, ini membuat code drupal akan lebih mudah digunakan oleh lingkungan PHP secara luas.

- PSR-3 Logging
Sebuah sistem logging umum yang bisa shared dengan aplikasi PHP terkait. Berbeda dengan versi drupal sebelumnya yang menggunakan watchdog(), maka pada drupal 8 lebih kuat dan scalable dalam arti logging umum. *****

*) diterjemahkan dari http://crossfunctional.net/blog/2013/mar/symfony-components-in-drupal-8

Tags: 

Komentar

Avatar rusdanid

Kalo gitu akan lebih powerful lagi donk .... Gregetan pake drupal mah...heheh

">