1 min read

Composer ile PSR-0 Standartlarında Autoloading Kullanımı

Composer, PHP projelerinde kullanılan dependency management (paket bağımlılığı)’dır. Yani projenizde kullanılmasını istediğiniz sınıfları, kütüphaneleri composer paket olarak depodan indirir ve otomatik olarak sınıfı include eder. Bu yazıda composer’ün ne olduğundan çok kendi yazdığımız sınıfları projeye nasıl autoloading yapabileceğimizi anlatacağım.

Composer ile iki çeşit autoloading yöntemi mevcut bunlardan biri PSR-0 Standartlarına uygun olarak autoloading, ikincisi ise PSR-4 Standartlarına uygun autoloading’dir. Bu yazıda PSR-0 ile autoloading yapımından bahsedeceğim. Daha önce PSR-0 yada PSR-4 gibi standartları duymamış, görmemiş bilmeyen arkadaşlar için PHP Kodlama Standartları adlı yazımıza davet ediyorum.

Bu yazıda örnek olarak Project1 adlı bir projemiz ve içine dahil etmeye çalışacağımız Twitter sınıfımızı autoloading edeceğiz. Dizin Yapısını hemen inceleyelim.

Project1
	composer.json
	lib
		Twitter
			Twitter.php
	.
	.
	.

Projemizin kök dizinin altında composer.json dosyamız mevcut. Bu json dosyası gerekli bağımlılıkların yer aldığı dosyadır. lib kütüphanelerimizin toplandığı dizin. Twitter autoloading etmek istediğimiz sınıfımızın kök dizini ve altında yer alan sınıfıdır.

Twitter.php Dosyamızı İnceleyelim:

<?php

namespace Twitter;

class Twitter
{
	public function __construct()
	{
		echo "test";
	}
}

Dikkat edilmesi gereken nokta, dahil ettiğimiz sınıfın namespace’i Composer dosyasında verilen isimle aynı olmalıdır. Aksi halde autoloading işlemi gerçekleşmeyecektir. Bir diğer nokta ise Sınıfın yada Soyut sınıfın (interface) ismi ile dosya ismi aynı olmalıdır.

Composer.json Dosyamızı inceleyelim

{
    "autoload": {
        "psr-0": { "Twitter": "lib" }
    }
}

PSR-0 Standartlarında yazdığımız için psr-0 objesinin altında Twitter namespace‘ine ait paketin konumunu verdik. Paket lib dosyasının içinde yer aldığı için kök dizin olarak orayı gösteriyoruz.

En son olarak ise composer dosyamızı çalıştırmalıyız. Uygulamamıza gelip aşağıdaki kodu terminal’de çalıştırmalısınız

composer update

Bu kod composer paketlerini ve kütüphanelerini dahil edip bir Vendor dizini oluşturur. Bu Vendor dizinin altında autoloading.php dosyası mevcuttur. Bu dosyayı projemize dahil ettikten sonra sınıfları başlatıp kullanabilirsiniz.