Membangun aplikasi Web dari awal dengan Laravel ( Part I )

Hai .. sudah lumayan lama nih kami gak update artikel karena sibuk ngurus project .. :)

Oke langsung ajah, sesuai judul di artikel kali ini kita akan membahas lebih mendalam tentang Framewok Laravel, di artikel kali ini seperti biasa akan kami buat tutorial ber part yah, kita akan mempelajari lebih lanjut tentang Laravel, dan mengapa itu adalah suatu pilihan yang cocok untuk aplikasi web berbasis PHP berikutnya.

Laravel Website

Seperti di Artikel sebelumnya mengenai Laravel, disini kita kutip atau ulas untuk lebih mengingat "Apa Itu Laravel..?"

Laravel adalah Framework yang bersih dan berkelas untuk pengembangan web PHP. Membebaskan Anda dari spaghetti code, hal ini membantu Anda membuat aplikasi yang indah, menggunakan sintaks sederhana, ekspresif. Development harus menjadi creative experience yang Anda nikmati, bukan sesuatu yang menyakitkan. Enjoy the fresh air!

Baca Juga:
Framework CodeIgniter

Laravel adalah Framework PHP 5.3 yang menggambarkan dirinya sebagai "Framework untuk Web Artisans". Menurut pengarangnya, Taylor Otwell, 'Laravel strives to bring back the joy to programming' dengan membuat Laravel sederhana, elegan, dan yang paling penting, terdokumentasi dengan baik.

Dari pengalaman saya dengan Framework, saya pasti setuju bahwa Laravel memiliki tiga poin ini:
  • Sederhana - Laravel's fungsionalitas mudah untuk memahami dan melaksanakan. Jika Anda menikmati CodeIgniter betapa sederhana dan mudah Framework itu, maka Anda akan menyukai Laravel
  • Elegan - sebagian besar fungsi-fungsi Laravel's bekerja mulus dengan sangat sedikit konfigurasi, bergantung pada Konvensi standar industri untuk mengurangi code-bloat
  • Terdokumentasi dengan baik - dokumentasi Laravel's lengkap dan selalu up-to-date. Pencipta framework membuat sebuah titik untuk memutahirkan dokumentasi sebelum meluncurkan versi baru, memastikan bahwa orang-orang yang belajar framework selalu memiliki dokumentasi terbaru.
Seperti halnya Framework PHP, Laravel menawarkan banyak fungsi yang membedakan dari sisa paket. Berikut adalah beberapa, yang saya rasa yang paling penting (berdasarkan http://laravel.com/docs).

Bundel akan Laravel sebagai PEAR adalah PHP.
Bundel dari Laravel adalah sebagai PEAR untuk PHP; mereka adalah add-on paket yang dapat Anda download dan pasang ke instalasi Laravel. Saat ini, ada beberapa kumpulan dalam repositori Bundle Laravel, dengan lebih banyak ditambahkan sepanjang waktu. Laravel dilengkapi dengan alat bantu baris perintah yang disebut Artisan, yang membuatnya sangat mudah untuk menginstal bundel.

Salah satu Laravel Bundle favorit saya, disebut Bob Builder menambah scaffolding tool yang berguna ke Laravel, dan memungkinkan Anda menghasilkan berbagai jenis file dan kelas-kelas yang cocok untuk Laravel, seperti controller, model, migrasi dan tes. Fungsi ini sangat mirip dengan apa yang mungkin Anda harapkan dari Rails generator. Untuk menginstal Bob, hanya menggunakan utilitas baris perintah Artisan, seperti:

 php artisan bundle:install bob  

Fasih ORM adalah implementasi PHP ActiveRecord paling canggih yang tersedia.
Fasih ORM adalah, sejauh ini adalah salah satu implementasi ORM terbaik yang saya telah gunakan. Mirip dengan bagaimana fungsi Doctrine ORM, membuat pekerjaan pada catatan database sederhana dan mudah. Ini abstrak sebagian fungsi yang Anda akan memiliki pada model (yaitu operasi CRUD) dan menyediakan cara yang fleksibel untuk menambahkan lebih banyak. Selain itu, ORM fasih memberi Anda kemampuan untuk mendefinisikan hubungan model untuk mengambil catatan, berdasarkan hubungan mereka dengan masukan lainnya. Misalnya, Anda dapat mengambil semua catatan file yang terkait dengan pengguna dengan melakukan perintah:

 foreach( $user->Files as $file ) {  
   echo $file->name;  
 }  

Migrasi database adalah utilitas yang besar dalam setiap project - terutama untuk proyek-proyek yang mana beberapa Developer terlibat - dengan membuatnya mudah untuk tetap up-to-date dengan anggota tim lainnya tentang perubahan skema database Anda. Dalam Laravel, migrasi yang dibangun ke dalam kerangka kerja; mereka dapat dijalankan melalui utilitas baris perintah Artisan. Laravel skema Builder memiliki fungsi cukup sederhana sehingga siapapun mampu dengan cepat me write up perubahan skema database.
Berikut adalah contoh, diambil dari dokumentasi Laravel :

 Schema::table('users', function($table)  
 {  
   $table->create();  
   $table->increments('id');  
   $table->string('username');  
   $table->string('email');  
   $table->string('phone')->nullable();  
   $table->text('about');  
   $table->timestamps();  
 });  

Sane Programmer from the TDD tutorial

Ingat orang ini? Waras programmer FTW
Gambar milik http://www.youthedesigner.com
Sebagai orang yang percaya pada Test-Driven Development (baca untuk info lebih lanjut: The Newbie's Guide to Test-Driven Development), saya suka kalau framework memiliki semacam pengujian unit utilitas baked in. Laravel sendiri indah karena terintegrasi dengan PHPUnit, mengandalkan statusnya sebagai salah satu industri terbaik PHP unit testing frameworks. Untuk membangun sebuah tes, hanya memperluas kelas PHPUnit_Framework_TestCase, seperti:

 class MyUnitTest extends PHPUnit_Framework_TestCase  
 {  
   public function somethingShouldBeTrue()  
   {  
     $this->assertTrue(true);  
   }  
 }  

Untuk menjalankan aplikasi Laravel tes, mari kita, sekali lagi, menggunakan utilitas baris perintah Artisan:

 php artisan test  

Perintah yang akan dijalankan semua test, yang ditemukan dalam direktori application/test aplikasi Laravel Anda.

Redis adalah key-value database, mirip dengan CouchDB dan MongoDB. Hal ini digunakan oleh banyak aplikasi web untuk menyimpan non-data relasional, dibandingkan dengan konvensional database (seperti MySQL), yang menyimpan catatan yang biasanya berhubungan dengan satu sama lain. Redis support dengan Laravel , dijalankan begitu elegan dan to the point bahwa bahkan saya tidak bisa untuk menggambarkan bagaimana mudahnya untuk bangun dan running.

Setelah Anda menyiapkan server Redis Anda, cukup buka file database.php dan tambahkan konfigurasi Redis Anda, seperti:

 'redis' => array(  
   'default' => array('host' => '127.0.0.1', 'port' => 6379),  
   'staging' => array('host' => 'redis-db-staging.host', 'port' => 6379),  
   'production' => array('host' => 'redis-db-production.host', 'port' => 6379),  
 )  

Right off the bat, kita dapat melihat bahwa Laravel mendukung beberapa konfigurasi Redis, berdasarkan lingkungan aplikasi Anda. Setelah Anda memiliki konfigurasi Redis Anda, Anda dapat mulai membuat panggilan ke Redis, seperti:

 $redis = Redis::db(); //this gets a Redis object connected to the 'default' configuration  
 $redis = Redis::db('staging'); //this gets a Redis object connected to the 'staging' configuration  
 $redis = Redis::db('production'); //this gets a Redis object connected to the 'production' configuration  
 $redis->set('site', 'Nettuts+');  
 $site = $redis->get('site');  
 $sites = $redis->lrange('sites', 0, -1);  

 
Sekarang kita tahu lebih banyak tentang Laravel, saatnya untuk mulai membangun aplikasi web kita dengan itu! Sepanjang seri-mini ini, kami akan membuat salinan Instagram kami sendiri, yang disebut Instapics. Aplikasi kecil ini memungkinkan Anda memposting, menyukai, dan mengomentari foto, serta mengikuti pengguna lain. Dengan pemikiran itu, mari selami!
Sebelum kita mulai, pertama mari kita pastikan bahwa kita memiliki sistem yang dapat mendukung Laravel. Menurut dokumentasi, Laravel membutuhkan hal berikut:
  • PHP 5.3.x - Laravel memanfaatkan banyak fitur-fitur khusus 5,3 PHP, seperti closures, late-static binding dan namespaces.
  • The FileInfo library - ini diaktifkan secara default di PHP 5.3, tetapi pada sistem Windows, Anda mungkin perlu untuk menambahkan ekstensi file konfigurasi PHP.ini Anda.
  • Mcrypt library - ini digunakan oleh Laravel untuk enkripsi dan hash generation, dan biasanya sudah diinstal sebelumnya dengan PHP.
Setelah selesai mengatur environment, mari unduh Laravel dan semua library yang akan kami gunakan untuk Insta Pics. Unduh file-file berikut dan tempatkan dalam folder yang dapat diakses web:
Di dalam folder root Laravel, Anda akan menemukan folder publik - ini adalah tempat semua file yang dapat diakses secara publik harus disimpan. Laravel v3.2.1 memiliki beberapa folder premade di dalam folder publik untuk folder aset, css, img, dan js kami. Tempatkan Bootstrap Twitter dan file jQuery di folder yang sesuai. Pada titik ini, struktur folder Anda akan terlihat seperti berikut ini:

Folder Structure

Twitter Bootstrap akan memiliki beberapa file di dalam folder css, img, dan js, dan jQuery akan di dalam js folder.
Sebelum kita menulis kode apapun, kita perlu untuk mengatur encyption key untuk Laravel yang akan digunakan pada aplikasi kita. Laravel menggunakan ini untuk mengenkripsi data yang kita mungkin perlu enkripsi, seperti cookies. Buka application/config/application.php file dan anda akan menemukan key setting. Di dalam, nilai default nya adalah YourSecretKeyGoesHere!. set itu menjadi blank; seharusnya terlihat seperti:

 /*  
 |--------------------------------------------------------------------------  
 | Application Key  
 |--------------------------------------------------------------------------  
 |  
 | This key is used by the encryption and cookie classes to generate secure  
 | encrypted strings and hashes. It is extremely important that this key  
 | remain secret and should not be shared with anyone. Make it about 32  
 | characters of random gibberish.  
 |  
 */  
 'key' => '',  

Selanjutnya, buka Terminal / Command Prompt, browse ke direktori root Laravel, dan gunakan Artisan untuk generate sebbuah key :

 php artisan key:generate  

Ini akan secara otomatis menghasilkan encyption key 32 karakter acak untuk Laravel. Jika Anda melakukan ini dengan benar, sekarang akan terlihat seperti berikut:

 /*  
 |--------------------------------------------------------------------------  
 | Application Key  
 |--------------------------------------------------------------------------  
 |  
 | This key is used by the encryption and cookie classes to generate secure  
 | encrypted strings and hashes. It is extremely important that this key  
 | remain secret and should not be shared with anyone. Make it about 32  
 | characters of random gibberish.  
 |  
 */  
 'key' => 'e9Vo0SQDe5HjsvXWcTogqKluVfEqnfEu',  

Jika Anda ingin membuat ulang kunci Anda, ulangi langkah-langkahnya!

Selanjutnya, kita perlu mengubah konfigurasi sehingga dapat menerima url cantik dan berfungsi bahkan tanpa mengarahkan permintaan kita ke index.php. Dalam file application / config / application.php, cari yang berikut ini:

 /*  
 |--------------------------------------------------------------------------  
 | Application Index  
 |--------------------------------------------------------------------------  
 |  
 | If you are including the "index.php" in your URLs, you can ignore this.  
 | However, if you are using mod_rewrite to get cleaner URLs, just set  
 | this option to an empty string and we'll take care of the rest.  
 |  
 */  
 'index' => 'index.php',  

Jika kami ingin mengaktifkan url cantik, pastikan pengaturan indeks kosong, seperti:

 /*  
 |--------------------------------------------------------------------------  
 | Application Index  
 |--------------------------------------------------------------------------  
 |  
 | If you are including the "index.php" in your URLs, you can ignore this.  
 | However, if you are using mod_rewrite to get cleaner URLs, just set  
 | this option to an empty string and we'll take care of the rest.  
 |  
 */  
 'index' => '',  

Jika Anda menggunakan ini, Anda perlu memastikan bahwa Anda telah mengaktifkan mod_rewrite di server web Anda (jika Anda menggunakan Apache).

Terakhir, kita perlu mengatur host virtual untuk Laravel. Ini tidak benar-benar diperlukan dalam lingkungan pengembangan, tetapi, untuk produksi, penting bahwa kami tidak mengizinkan akses ke Laravel libary dan application files. Seperti disebutkan di atas, dalam file Laravel Anda akan melihat folder, yang disebut publik, yang merupakan tempat semua file yang dapat diakses publik harus pergi. Selain itu, kami perlu memastikan bahwa domain kita, contoh http://instapics.com hanya menunjuk ke folder publik dan tidak ke tempat lain.

Mengkonfigurasi host virtual tergantung pada server web yang Anda gunakan. Berikut ini contoh untuk Server Web Apache:

 <VirtualHost *:80>  
   ServerName instapics.com  
   DocumentRoot "D:/Development/htdocs/instapics/public"  
   <Directory "D:/Development/htdocs/instapics/public">   
   </Directory>  
 </VirtualHost>  

Kita juga harus menambahkan domain, instapics.com, untuk file host kita (karena domain ini tidak benar-benar ada). Di Windows, edit file C:\Windows\System32\drivers\etc\hosts; di Linux/OSX, Anda biasanya mengedit/etc/hosts. Tambahkan baris ini ke file:

 127.0.0.1 instapics.com  

Di Laravel, semua permintaan ke aplikasi dipetakan ke fungsi atau pengontrol spesifik oleh Rute. Mereka bertanggung jawab untuk menginstruksikan aplikasi ke mana URL pergi. Misalnya, jika kami ingin http://instapics.com/home untuk membuat file tampilan home, kami dapat membuat rute berikut di dalam route.php, yang ditemukan di dalam folder aplikasi:

 Route::any('home', function()  
 {  
   return View::make('home.index');  
 })  

Atau, jika kita perlu merutekan http://instapics.com/home ke Pengontrol, katakanlah, pengontrol home.php, kita mungkin melakukan sesuatu seperti ini:

 Route::controller('home');  

Ini akan merutekan ke file contoller home.php. Metode tindakan apa pun di sana akan tersedia juga.

Satu hal penting yang perlu diperhatikan di sini adalah bahwa secara default, Laravel TIDAK merutekan ke pengontrol seperti framework PHP lainnya. Ini dengan desain. Dengan melakukan itu, kita sebenarnya dapat membuat halaman sederhana tanpa perlu membuat controller untuk itu. Misalnya, jika kami ingin membuat halaman Hubungi Kami statis yang hanya mencantumkan informasi kontak, kami dapat melakukan sesuatu seperti ini:

 Route::any('contact-us', function()  
 {  
   return View::make('home.contact-us');  
 })  

Ini akan merutekan http://instapics.com/contact-us dan me-render file aplikasi / views / home / contact-us.php. Karena kita tidak benar-benar memiliki pemrosesan dinamis pada halaman ini, kita bisa secara otomatis membuat file tampilan, menghemat waktu kita untuk membuat dan mengkonfigurasi controller untuk melakukannya.

To Be Continued...

Mungkin untuk Part 1 nya cukup sampai disini, kita akan sambung lagi ke part beriktnya, Stay Tune For Next Info :)