Config Writer Codeigniter 4

Config Writer Codeigniter 4

Config Writer Codeigniter 4


Haloo guys.. kali ini mimin akan membagikan sebuah library yang baru saya bikin, sesuai dengan namanya "Config Writer Codeigniter 4" yaitu library yang berfungsi untuk mengrewrite value di file config cedeigniter 4 anda.

 

1. BUAT FILE LIBRARY.

 

Buat sebuah file di library anda dan beri nama configWriter.php dan  copas kode berikut kedalam file tersebut :

 

<?php namespace App\Libraries;

class ConfigWriter
{
    
    public function write($file, $var, $newValue, $config = null)
    {
        if ($config != null)
        {
            $this->writeArrayValue($file, $var, $newValue, $config);
        }
        else
        {
            $this->writeSingleValue($file, $var, $newValue);
        }
    }

	public function writeArrayValue($file = null, $var = null, $newValue = null, $config = null)
	{
        if (!is_null($file) && !is_null($var) && !is_null($newValue) && !is_null($config))
        {
            $file = APPPATH . 'Config/'.$file.'.php';
            if (file_exists($file))
            {
                $PrimaryKey  = trim($var);
                $newValue  = "'$PrimaryKey' => '$newValue'";
                $config = '$'.$config;
                $stats = 'N';
                
                $buffer = "";
                $filePath = file($file);
                foreach ($filePath as $line) {
                    $data = explode(' ', trim($line));
                    if (count($data) > 1) {
                        $searchVar = trim($data[0]).' '.$config;
                        $foundVar = trim($data[0]).' '.trim($data[1]);
                        if ($searchVar === $foundVar) {
                            $stats = 'Y';
                        }
                        if (trim($data[0]) === "'$PrimaryKey'" && $stats === 'Y' ) {
                            $buffer .= str_replace(substr(trim($line), 0, -1), $newValue, $line);
                            $stats = 'N';
                        } else {
                            $buffer .= $line;
                        }
                    } else {
                        $buffer .= $line;
                    }
                }
                file_put_contents($file, $buffer, LOCK_EX);
                echo "Write Succesfully";
            }
            else
            {
                echo "file doesn't exists";
            }
        }
        else
        {
            echo 'Null Variable';
        }
	}
	
	public function writeSingleValue($file = null, $var = null, $newValue = null)
	{
        if (!is_null($file) && !is_null($var) && !is_null($newValue))
        {
            $file = APPPATH . 'Config/'.$file.'.php';
            if (file_exists($file))
            {
                $PrimaryKey  = trim('$'.$var);
                $newValue  = $PrimaryKey." = '$newValue'";
                
                $buffer = "";
                $filePath = file($file);
                foreach ($filePath as $line) {
                    if( preg_match_all('/('.preg_quote($PrimaryKey,'/').')/i', $line, $matches)){
                        $condition = preg_replace('/(s*)([^s]*)(.*)/', '$2', substr(trim($line), 0, -1));
                        $buffer .= str_replace(substr(trim($line), 0, -1), $condition.' '.$newValue, $line);
                    } else {
                        $buffer .= $line;
                    }
                }
                file_put_contents($file, $buffer, LOCK_EX);
                echo "Write Succesfully";
            }
            else
            {
                echo "file doesn't exists";
            }
        }
        else
        {
            echo 'Null Variable';
        }
    }
    
}

 

2. CARA PENGGUNAAN/FUNGSI DI CONTROLLER.

 

Cara penggunaannya cukup simple, anda bisa memanggil fungsi di control manapun, ditutorial ini saya menggunakan controller home.

Langkah pertama yaitu Load librarynya :

 

use App\Libraries\configWriter;

 

Langkah kedua buat konstruksi variabel :

 

	public function __construct()
	{	
		$this->configWriter = new ConfigWriter();

    }

 

Langkah ketiga buat function baru dengan nama wconfig :

 

	public function wconfig()
	{
		
	}

 

di function wconfig inilah kita akan menggunakan fungsi library tersebut sebagai contoh. cara penggunaannya :

 

//for none Array config
$this->configWriter->write('File Name', 'config variable', 'New Value');

//for Array config
$this->configWriter->write('File Name', 'array variable', 'New Value', 'config variable');

 

Sehingga untuk kode keseluruhan di controller Home seperti berikut :

 

<?php namespace App\Controllers;

use App\Libraries\ConfigWriter;

class Home extends BaseController
{
	public function __construct()
	{	
		$this->configWriter = new ConfigWriter();

    }
	public function index()
	{
        $data['title'] = "Welcome To Codeigniter 4";
		$data['heading'] = "My Real Heading";
		return view('welcome_message', $data);
	}

	public function wconfig()
	{
		$this->configWriter->write('MyConfig', 'hostname', 'this is hostname', 'default');
	}

}

 

Dan disini saya mempunyai file config dengan nama MyConfig.php :

 

 

Disana terlihat 2 jenis variable, type Array dan Non Array. Untuk write value variable Non Array misalnya Value variable $varConfig1 maka fungsi yang digunakan seperti berikut :

 

$this->configWriter->write('MyConfig', 'varConfig1', 'this is new value');

 

MyConfig adalah nama file config, untuk config bawaan CodeIgniter 4 sendiri contohnya App.php, Database.php, Email.php dan lain-lain. Maka yang diambil cukup namanya saja.

varConfig1 adalah variable Non Array yang akan di rewrite Valuenya.

this new value adalah value baru untuk variable varConfig1.

 

Adapun untuk rewrite value variable Array dengan menambahkan variable dasar dan variable Arraynya :

 

$this->configWriter->write('MyConfig', 'hostname', 'this is hostname', 'default');

 

hostname adalah variable Array di dalam variable config default, jadi jika yang ingin rewrite adalah array dalam variable tests maka tinggal ganti default dengan tests.

 

$this->configWriter->write('MyConfig', 'hostname', 'this is hostname', 'tests');

 

Karna function wconfig berada dalam controller home sehingga urlnya seperti ini : http://localhost:8080/home/wconfig jika anda menggunakan fungsi yang pertama maka value variable hostname di config variable default akan menjadi "this is hostname".

 

    
	public $default = [
		'DSN'      => '',
		'hostname' => 'this is hostname',
		'username' => 'root',
		'password' => 'mypassword',
		'database' => 'mydatabase',
		'DBDriver' => 'MySQLi'
	];

 

Sekian untuk tutorial penggunaan library Config Writer Codeigniter 4 ini.

 

Bagikan


Artikel Dipost Oleh Hariadi

Seorang freelancer website and software developer, gemar dengan ilmu seputar IT serta penuh semangat untuk belajar.


4 Komentar

Wahyu Syamsul Alam Wahyu Syamsul Alam Member 10 Jan 2022
It works!! terimakasih.. sekarang jadi bisa edit konfigurasi simple tanpa database lagi hehe
Yahya Erturan Yahya Erturan 11 Jul 2021
Great library, thank you. For writing a single value correctly you need to change "/(s*)([^s]*)(.*)/" regex with "/(s*)([^s\s]*)(.*)/". Thanks again.

Berikan komentar ...