Autoloading

Loading dengan auto laaaah.

Kenapa pake autoloading?

  • Bagusnya, setiap class itu disimpan dalam satu file.
  • Biar gak repot pake require (kalau file-nya banyak kan repot ya?), nah… pake autoloading ini.

Pake ini nih:

spl_autoload_register();

Terus dikasih fungsi sebagai parameter, misalnya,

spl_autoload_register(function ($class) {
  require_once __DIR__ . 'NamaFolder/' . $class . '.php';
});

Tah ya, itu paramater $class teh otomatis manggil class yang ada di folder NamaFolder. Otomatis weh pokokna mah.
NamaFolder itu teh bisa lah disebut package.

Namespace

  • Mengelompokkan program kedalam package.
  • Encapsulation.
  • Kan gak boleh ada class dengan nama yang sama, nah kalau package-nya beda mah bisa.

Pake keyword namespace di bagian awal skrip yang nyimpen class.

<?php namespace Vendor\NamaPackage;

Cara instansiasinya harus ditulis namespace-nya

new Vendor\NamaPackage\NamaClass();

Nah si autoload nya juga harus diubah, biarr manggil class yang ada namespace-nya.

spl_autoload_register(function ($class) {
  $class = explode('\\', $class);
  $class = end($class);
  require_once __DIR__ . 'NamaFolder/' . $class . '.php';
});

Alias

  • Kalau nanti namespace-nya panjang, kan bisa ada sub-sub-nya tuh, kan ribet kalau ditulisin. Nah ini ada alias biar gak ribet.
  • Biar gak ada nama yang sama juga.
  • Pake keyword use dan as di bagian atas skrip.
use Vendor\NamaPackage\NamaClass as Alias;

Sebenernya, bebas aja sih alias nya mah. Tapi enaknya mah gini: NamaPackage_NamaClass.


Web Programming UNPAS

OOP DASAR pada PHP #16 - Autoloading
OOP DASAR pada PHP #17 - Namespace