[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-cats-ngidenet":3,"blog-detail-ngidenet-belajar-laravel-apa-yang-baru-dari-laravel-55":20},{"items":4},[5,9,13,17],{"name":6,"slug":7,"count":8},"Digital Marketing","digital-marketing",41,{"name":10,"slug":11,"count":12},"Programming","programming",56,{"name":14,"slug":15,"count":16},"Tips","tips",75,{"name":18,"slug":19,"count":8},"Web Development","web-development",{"id":21,"slug":22,"title":23,"short_text":24,"excerpt":24,"cover":25,"cover_image":25,"cover_alt_text":25,"category":10,"tags":26,"published_at":27,"created_at":28,"full_text":29,"meta_title":25,"meta_description":30,"faqs":31,"images":32,"views_count":33},429,"belajar-laravel-apa-yang-baru-dari-laravel-55","Belajar Laravel : Apa yang baru dari Laravel 5.5?","Beberapa hari yang lalu berita baik datang dari salah satu PHP framework kesukaan penulis yaitu Laravel dengan dirilisnya versi yang paling baru yaitu 5.5 Berita baik tidak sampai di rilis versi terba",null,[],"2020-09-20T16:00:00Z","2026-07-14T04:39:38.969154Z","\u003Cp>Beberapa hari yang lalu berita baik datang dari salah satu PHP framework kesukaan penulis yaitu Laravel dengan dirilisnya versi yang paling baru yaitu 5.5\u003C\u002Fp>\n\u003Cp>Berita baik tidak sampai di rilis versi terbaru saja tapi versi 5.5 ini adalah versi LTS (\u003Cem>Long Term Support\u003C\u002Fem>) melanjutkan versi LTS sebelumnya yaitu Laravel versi 5.1.\u003C\u002Fp>\n\u003Cp>Buat kalian yang tidak tahu apa itu LTS, LTS berarti versi ini akan mendapatkan support yang lebih lama yaitu  perbaikan bug selama dua tahun, dan perbaikan keamanan selama tiga tahun. Sedangkan pada versi yang bukan LTS seperti versi 5.2 dan 5.3 hanya menerima dukungan perbaikan bug selama 6 bulan, dan perbaikan keamanan selama satu tahun.\u003C\u002Fp>\n\u003Cp>Kembali lagi ke topik yang mau kita bahas yaitu apa saja sih yang baru di Laravel versi 5.5 ini? Setelah saya coba install dan baca-baca maka inilah fitur-fitur menarik dari laravel 5.5\u003C\u002Fp>\n\u003Ch3>1. Whoops Package\u003C\u002Fh3>\n\u003Cp>Selamat datang lagi buat Whoosp erros!\u003Cem> Whoops package\u003C\u002Fem> ini berfungsi untuk menampilkan pesan saat terjadi error pada kode di dalam aplikasi Laravel. Jika kalian pengguna Laravel di versi 4, maka tentu tidak asing lagi dengan pesan berupa _“Whoops something error” . _Package ini sangat membantu  saat terjadi error karena akan menampilakn informasi tentang error tersebut secara lengkap dan detail\u003C\u002Fp>\n\u003Ch3>2. Collection Dumping\u003C\u002Fh3>\n\u003Cp>Pernah memakai helper dd() ?  Nah sekarang kamu bisa menggunakan helper ini langsung di _object collection_dalam bentuk method \u003Ccode>-&gt;dd()\u003C\u002Fcode> . Langsung saja lihat contohnya di bawah ini:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php\nSong::all()\n    -&gt;filter\n    -&gt;platinum\n    -&gt;dump()\n    -&gt;filter(function ($song) {\n        return $song-&gt;released_on &gt;= CarbonCarbon::parse('-10 years');\n    })-&gt;dd();\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>3. The Responsable Interface\u003C\u002Fh3>\n\u003Cp>Maksudnya apa sih \u003Cem>Responsable interface\u003C\u002Fem>? Jadi di laravel 5.5. kamu bisa membuat class response sendiri untuk masing-masing \u003Cem>object\u003C\u002Fem>. Kita lihat aja contohnya agar lebih mudah mengerti.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>public function store(Request $request)\n{\n    $data = request()-&gt;validate([\n        'title' =&gt; 'required',\n        'artist' =&gt; 'required',\n        'description' =&gt; 'required',\n        'duration' =&gt; 'required|numeric',\n        'released_on' =&gt; 'required|date_format:Y-m-d',\n        'gold' =&gt; 'boolean',\n        'platinum' =&gt; 'boolean',\n    ]);\n    $song = new Song($data);\n    $song-&gt;save();\n    return new NewSongResponse($song);\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Nah bisa dilihat di bagian \u003Ccode>return new NewSongResponse($song);\u003C\u002Fcode> agak sedikit berbeda dangan cara biasa kita melakikan return di laravel versi sebelumnya.\u003C\u002Fp>\n\u003Cp>Jadi jika kita biasanya langsung memanggil helper \u003Ccode>response()\u003C\u002Fcode>, sekarang kita bisa membuat sebuah response class sendiri untuk masing-masing object. Lalu apa isi dari class \u003Ccode>NewSongResponse\u003C\u002Fcode> tersebut?\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php\nnamespace AppHttpResponses;\nuse AppSong;\nuse IlluminateContractsSupportResponsable;\nclass NewSongResponse implements Responsable\n{\n    \u002F**\n     * @var AppSong\n     *\u002F\n    protected $song;\n    \u002F**\n     * @param AppSong $song\n     *\u002F\n    public function __construct(Song $song)\n    {\n       $this-&gt;song = $song; \n    }\n    public function toResponse($request)\n    {\n        if ($request-&gt;wantsJson()) {\n            return response()\n                -&gt;json($this-&gt;song)\n                -&gt;header('Location', route('songs.show', $this-&gt;song))\n                -&gt;setStatusCode(201);\n        }\n        return redirect()\n            -&gt;route('songs.show', $this-&gt;song);\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Bisa kita lihat di bagian \u003Ccode>toResponse\u003C\u002Fcode>, Jika request berupa ajax maka otomatis responsenya berupa json, jika request biasa maka akan di return berupa redirect. Dengan adanya \u003Cem>Responsible interface\u003C\u002Fem> maka isi dari controller akan menjadi semakin rapi. \u003C\u002Fp>\n\u003Ch3>4. Request Validation Method\u003C\u002Fh3>\n\u003Cp>Jika sebelumnya untuk melakukan validasi di controller kita memanggil method \u003Ccode>$this-&gt;validate()\u003C\u002Fcode> sekarang bisa langsung melakukan validasi dari request object. Contohnya seperti di bawah ini.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$data = request()-&gt;validate([\n    'title' =&gt; 'required',\n    'artist' =&gt; 'required',\n    'description' =&gt; 'required',\n    'duration' =&gt; 'required|numeric',\n    'released_on' =&gt; 'required|date_format:Y-m-d',\n    'gold' =&gt; 'boolean',\n    'platinum' =&gt; 'boolean',\n]);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>5. Custom Validation Rule Objects and Closures\u003C\u002Fh3>\n\u003Cp>Fitur selanjutnya ini sangat membantu kita untuk membuat sebuah rule validasi kustom dimana biasanya kita membuat sebuah rule baru dengan mengextend dari class \u003Cem>\u003Cstrong>Validator\u003C\u002Fstrong>\u003C\u002Fem> berupa \u003Ccode>Validator::extend\u003C\u002Fcode>. Sekarang cara membuat sebuah rule baru menjadi lebih clear, sangat elegant dan mudah. Contoh cara membuat validasi rule baru dapat dilihat di contoh di bawah.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php\nnamespace AppRules;\nuse IlluminateContractsValidationRule;\nclass CowbellValidationRule implements Rule\n{\n    public function passes($attribute, $value)\n    {\n        return $value &gt; 10;\n    }\n    public function message()\n    {\n        return ':attribute needs more cowbell!';\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Dari contoh di atas, cara memakai custom validation yang sudah dibuat diatas seperti dibawah ini:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>&lt;?php\n \nrequest()-&gt;validate([\n    'cowbells' =&gt; [new CowbellValidationRule],\n    'more_cowbells' =&gt; [function ($attribute, $value, $fail) {\n        if ($value &lt;= 10) {\n            $fail(':attribute needs more cowbell!');\n        }\n    }]\n]);\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Selain lewat object, kamu juga bisa langsung membuat custom rule dengan \u003Ccode>clousure\u003C\u002Fcode>. Seperti contoh rule \u003Ccode>more_cowbells\u003C\u002Fcode> di atas. Clousure ini sangat membantu kita untuk membuat validasi yang simple tanpa harus membuat class dulu atau digunakan untuk membuat prototype custom role sebelum memindahkannya kedalam sebuah class. Fitur yang sangat keren!\u003C\u002Fp>\n\u003Ch3>6. Blade::if ,Auth dan juga Guest Blade Directives\u003C\u002Fh3>\n\u003Cp>Di laravel 5.5 diperkenalkan sebuah blade baru yaitu Blade::if yang digunakan untuk menyimplekan fungsi if else di dalam blade template kamu. Cara untuk menambahkan custom blade directive adalah dengan menambahkan beberapa code baru di \u003Ccode>AppServiceProvider::boot()\u003C\u002Fcode>method.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>use IlluminateSupportFacadesBlade;\n \nBlade::if('admin', function () {\n    return auth()-&gt;check() &amp;&amp; auth()-&gt;user()-&gt;isAdmin();\n});\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Cara memangilnya akan jadi seperti di bawah ini.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>@admin\n    &lt;a href=\"{{ route('super.secret') }}\"&gt;Secret Page&lt;\u002Fa&gt;\n@else\n    Welcome Guest. &lt;a href=\"{{ route('login') }}\"&gt;Login&lt;\u002Fa&gt;\n@endadmin\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>Keren banget! Eits, tapi ada tambahan lagi yaitu blade Auth dan Guest yang sudah disediakan laravel secara default untuk menghandle apakah si user itu login atau tidak.\u003C\u002Fp>\n\u003Cp>Cara menggunakan blade Auth &amp; Guest seperti berikut.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>@auth\n    Welcome {{ user()-&gt;name }}!\n@endauth\n \n@guest\n    Welcome Guest!\n@endguest\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>7. Frontend Presets\u003C\u002Fh3>\n\u003Cp>Fitur selanjutnya yang tidak kalah keren adalah soal frontend presets. Secara default, laravel menyediakan frontend berupa Vue.js. Namun sekarang kamu bisa memilih apakah mau menggunakan vue atau react atau tanpa ada frontend framework  di aplikasi kalian.\u003C\u002Fp>\n\u003Cp>Caranya adalah dengan memanggil command \u003Ccode>preset\u003C\u002Fcode> lewat artisan seperti contoh di bawah ini.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>php artisan help preset\nUsage:\n  preset &lt;type&gt;\nArguments:\n  type    The preset type (none, bootstrap, vue, react)\n# Use react\n$ php artisan preset react\n# Clear scaffolding\n$ php artisan preset none\n\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3>8. Automatic Package Discovery\u003C\u002Fh3>\n\u003Cp>Fitur yang satu ini tidak kalah keren juga teman-teman. Sesuai namanya, fitur ini memberikan kemudahan kita saat menginstall package di dalam aplikasi laravel yang sedang kita buat dengan secara otomatis tanpa harus menambahkan Provider dan Aliias di file app.php. Karena biasanya kita suka lupa kan setelah menginstall package tapi lupa menambahkan Provider dan Aliasnya. Tapi kamu juga bisa mendisable fitur automatic ini untuk beberapa package.\u003C\u002Fp>\n\u003Cp>Itulah fitur-fitur terbaru yang ada di dalam Laravel 5.5, Jika kalian mau upgrade versi laravel sebelumnya ke laravel 5.5 wajib baca dulu upgrade guidenya di situs laravel supaya tidak ada error ya. Selamat mencoba laravel 5.5\u003C\u002Fp>\n\u003Cp>Referensi :\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flaravel-news.com\u002Flaravel-5-5\">https:\u002F\u002Flaravel-news.com\u002Flaravel-5-5\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Flaravel.com\u002Fdocs\u002F5.5%3E\">https:\u002F\u002Flaravel.com\u002Fdocs\u002F5.5&gt;\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Fol>","Beberapa hari yang lalu berita baik datang dari salah satu PHP framework kesukaan penulis yaitu Laravel dengan dirilisnya versi yang paling baru yaitu 5.5 Berit",[],[],0]