Membuat Kelas Sistem Inti Codeigniter 4
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
- 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
<?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
- Deklarasi kelas harus memperluas kelas induk.
<?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();
}
}
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/