2 min read

FuelPHP Bootstrap AutoLoader Kullanımı

FuelPHP ile uygulamalarınızı geliştirirken aynı kodları tekrar tekrar yazmak yerine ayrı bir sınıf yapıp bunları controller metotlarımızın içinde tekrar tekrar kullanabiliriz. Bu bize hem kolaylık sağlar hemde kodları geliştirmek istediğimizde tek yerden bu işlemi halletmiş olabiliriz. Bunun için öncelikle oluşturacağımız sınıfların yolunu ve adlarını belirlemelisiniz. Yalnız bu sınıflar Bootstrap ile sayfa her yüklendiğinde yeniden include edileceği için sadece uygulamanızda genel olarak kullanmanız gereken sınıfları bootstrap’a eklemeniz makul olacaktır.

Ayrıca her uygulama yeniden başlatıldığında yeniden yüklenen sınıflar yerine, metota özel ihtiyacınız olduğu zaman yüklenmesini istediğiniz sınıflar için ise FuelPHP AutoLoader sınıfını kullanacağız. Bu sınıfla ilgili detayları ilerleyen zamanlarda gireceğimi umuyorum ve örneğimize geçiyoruz.

app/classes/controller/ yolunun içinde bir core.php dosyası ve bu dosyanın içinde Core isimli bir sınıf olduğunu varsayalım hatta varsaymayalım oluşturalım.

<?php

class Core{

    // app/classes/controller/core.php

    public static function example($param){
        echo $param;
    }

}

Bu sınıfım singleton bir sınıf olsun ve yapısı gereği static metotlardan oluşsun. Şimdi biz bu çekirdek sınıfı fuelphp’nin Welcome controller’ında kullanalım. Ancak bundan önce bootstrap.php içine bu dosyayı autoloader’a eklememiz gerekiyor.

<?php

// Load in the Autoloader
require COREPATH.'classes'.DIRECTORY_SEPARATOR.'autoloader.php';
class_alias('Fuel\\Core\\Autoloader', 'Autoloader');

// Bootstrap the framework DO NOT edit this
require COREPATH.'bootstrap.php';

Autoloader::add_classes(array(
	// Add classes you want to override here
	// Example: 'View' => APPPATH.'classes/view.php',
));
// Register the autoloader
Autoloader::register();

/**
 * Your environment.  Can be set to any of the following:
 *
 * Fuel::DEVELOPMENT
 * Fuel::TEST
 * Fuel::STAGING
 * Fuel::PRODUCTION
 */
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);

// Initialize the framework with the config file.
Fuel::init('config.php');

Varsayılan olarak bu halde olan bir bootstrap dosyam var burada AutoLoader sınıfına ait add_classes metotunu kullanacağım, bu metotu ayrıca metotlarınızda da kullanarak sınıfları include edebilirsiniz.

Autoloader::add_classes(array(
	// Add classes you want to override here
	// Example: 'View' => APPPATH.'classes/view.php',
	'Core' => APPPATH.'classes/controller/core.php',
));

add_classes metotuna array olarak tanımladığımız sınıfımız ile include işlemi başarılı bir şekilde gerçekleşti. Peki burada include ederken yolu belirledik ancak neden index ismi verdik? Bunun nedeni aynı isimli sınıfların çakışmasını önlemek için Namespace kullanırız bilindiği üzere, FuelPHP’de bu nedenle namespace ile bu sorunun önüne geçer, ancak biz sınıfımıza namespace tanımlamadığımız için direk sınıf ismini yazdık.

Controller dosyamızda sınıfımızı kullanmamız için gereken tek şey;

	public function action_index()
	{
		Core::example("hede");
	}

Umarım yararlı olmuştur, bir sonraki fuelphp yazımızda görüşmek üzere..