Membuat Kelas Sistem Inti Codeigniter 4

Membuat Kelas Sistem Inti


Candil.eu.org - Setiap kali CodeIgniter berjalan ada beberapa kelas dasar yang diinisialisasi secara otomatis sebagai bagian dari kerangka inti. Namun, dimungkinkan untuk menukar salah satu kelas sistem inti dengan versi Anda sendiri atau bahkan hanya memperluas versi inti.

Sebagian besar pengguna tidak akan pernah perlu melakukan ini, tetapi opsi untuk mengganti atau memperluasnya memang ada bagi mereka yang ingin mengubah inti CodeIgniter secara signifikan.


Catatan : Bermain-main dengan kelas sistem inti memiliki banyak implikasi, jadi pastikan Anda tahu apa yang Anda lakukan sebelum mencobanya.


Daftar Kelas Sistem

Berikut ini adalah daftar file sistem inti yang dipanggil setiap kali CodeIgniter dijalankan:

  • Konfigurasi\Layanan
  • CodeIgniter\Autoloader\Autoloader
  • CodeIgniter\Config\DotEnv
  • CodeIgniter\Controller
  • CodeIgniter\Debug\Exceptions
  • CodeIgniter\Debug\Timer
  • CodeIgniter\Events\Events
  • CodeIgniter\HTTP\CLIRequest (jika diluncurkan dari baris perintah saja)
  • CodeIgniter\HTTP\IncomingRequest (jika diluncurkan melalui HTTP)
  • CodeIgniter\HTTP\Request
  • CodeIgniter\HTTP\Respons
  • CodeIgniter\HTTP\Pesan
  • CodeIgniter\HTTP\URI
  • CodeIgniter\Log\Logger
  • CodeIgniter\Log\Handlers\BaseHandler
  • CodeIgniter\Log\Handlers\FileHandler
  • CodeIgniter\Router\RouteCollection
  • CodeIgniter\Router\Router
  • CodeIgniter\Security\Security
  • CodeIgniter\View\View
  • CodeIgniter\View\Escaper

Mengganti Kelas Inti


Untuk menggunakan salah satu kelas sistem Anda sendiri alih-alih yang default, pastikan bahwa Autoloader dapat menemukan kelas Anda, bahwa kelas baru Anda memperluas antarmuka yang sesuai, dan memodifikasi Layanan yang sesuai untuk memuat kelas Anda menggantikan kelas inti.

Misalnya, jika Anda memiliki App\Libraries\RouteCollectionkelas baru yang ingin Anda gunakan sebagai pengganti kelas sistem inti, Anda akan membuat kelas seperti ini:
<?php

namespace AppLibraries;

use CodeIgniterRouterRouteCollectionInterface;

class RouteCollection implements RouteCollectionInterface
{
    // ...
}

Kemudian Anda akan memodifikasi routeslayanan untuk memuat kelas Anda sebagai gantinya:

public static function routes(bool $getShared = true)
{
        if ($getShared)
        {
                return static::getSharedInstance('routes');
        }

        return new RouteCollection(static::locator(), config('Modules'));
}

Memperluas Kelas Inti

Jika yang Anda perlukan hanyalah menambahkan beberapa fungsionalitas ke perpustakaan yang ada - mungkin menambahkan satu atau dua metode - maka itu berlebihan untuk membuat ulang seluruh perpustakaan. Dalam hal ini, lebih baik hanya memperluas kelas. Memperluas kelas hampir identik dengan mengganti kelas dengan satu pengecualian:

  • Deklarasi kelas harus memperluas kelas induk.
Misalnya, untuk memperluas kelas RouteCollection asli, Anda akan mendeklarasikan kelas Anda dengan:

<?php

namespace AppLibraries;

use CodeIgniterRouterRouteCollection;

class RouteCollection extends RouteCollection
{
    // ...
}

Jika Anda perlu menggunakan konstruktor di kelas Anda, pastikan Anda memperluas konstruktor induk:

<?php

namespace AppLibraries;

use CodeIgniterRouterRouteCollection as BaseRouteCollection;

class RouteCollection extends BaseRouteCollection
{
    public function __construct()
    {
        parent::__construct();
    }
}
Tips :

Setiap fungsi di kelas Anda yang diberi nama identik dengan metode di kelas induk akan digunakan sebagai ganti yang asli (ini dikenal sebagai "penggantian metode"). Ini memungkinkan Anda untuk mengubah inti CodeIgniter secara substansial.

Sumber : codeigniter.com/