Laravel Autoloading Kullanımı
Laravel framework’ü kullanılan projelerde dışarıdan herhangi bir kütüphane yada sizin kendinize ait sınıflarınızı her sayfa yüklendiğinde dahil olmasını istiyorsanız Laravel’in Autoloading özelliğini kullanmanız gerekmektedir. Laravel, her sayfa yüklendiğinde projeye dahil edeceği kütüphaneleri, sınıfları projenin kök dizininde bulunan composer.json dosyasından alır ve autoloading işlemini gerçekleştirir.
Burada bir yanlış anlaşılma olmasın composer yapısı gereği içerisinde autoloading metotu bulundurur ve her yeni kütüphane yada sınıf eklendiğinde bu composer‘ü güncellemeniz gerekmektedir. Bu güncelleme sonucunda dahil edilecek sınıflar yada eksik olan paketler projeye indirilir.
Örneğe gelecek olursak bir Araba adında kütüphanemiz olsun ve bu kütüphanemiz app/lib dizinin altında yer alsın. Ortaya şöyle bir hiyerarşi çıkması lazım:
Project app config controller lib Araba . . . composer.json
Şimdi Araba kütüphanemizi oluşturalım. Araba dizinin altına ArabaInterface.php ve Araba.php adında iki php dosyası oluşturalım.
ArabaInterface.php:
<?php namespace Araba; interface ArabaInterface { public function marka($marka); public function model($model,$yıl); public function fiyat($marka,$model); }
Araba.php
<?php namespace Araba; class Araba implements ArabaInterface { public function marka($marka) { } public function model($model,$yıl) { } public function fiyat($marka,$model) { } }
Bu noktada dikkat edilmesi gerekilen nokta namespace‘dir. Kullanılan kütüphaneye ait namespace tanımlamaları yapılması gerekmektedir. Daha sonra kütüphanenin autoloading olması için composer’e tanıtmamız gerekiyor.
Composer.json:
{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "laravel/framework": "4.2.*" }, "autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php", "app/lib" ] }, "scripts": { "post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ], "post-update-cmd": [ "php artisan clear-compiled", "php artisan optimize" ], "post-create-project-cmd": [ "php artisan key:generate" ] }, "config": { "preferred-install": "dist" }, "minimum-stability": "stable" }
Autoload altında yer alan Classmap objesine kütüphanemizin bulunduğu yolu ekliyoruz. Yani app/lib dizinini ekliyoruz. Böylece bu klasör altına gelen tüm kütüphaneler otomatik olarak autoloading edilecektir.
Son olarak kütüphanelerin güncellenmesi ve autoloading metotuna sınıfın tanıtılması isin projenin kök dizininde aşağıdaki kodu terminalde çalıştırmanız gerekmektedir.
$ composer update
Artık Araba adlı sınıfımızı başlatıp kullanabiliriz.
<?php // routes.php Route::get('/', function() { $araba = new Araba\Araba(); return View::make('anasayfa'); });