trading head

Membuat Framework MVC Sendiri

oleh
oleh
cara membuat framework php sendiri

kita akan membahas mengenai bahasa pemprograman PHP, dengan judul membuat framework MVC Sendiri. materi pembahasan pada artikel ini membahas dari video youtube chenel Web Programing Unpasdengan judul Membuat Aplikasi MVC dengan PHP. yang dinama dalam video tersebut telah membahas dan mengajarkan cara membuat aplikasi MVC dengan bahasa pemprograman PHP. sebelum kita membahas mengenai pembuatan framework MVC, pada artikel “Membuat Framework MVC” kita akan membahas sekilas mengenai model krangka kerja MVC, dan sekaligus melakukan sedikit pengembangan framework ini, yang telah kita dapatkan dari belajar di chenel youtube “Web Programing Unpas” .

jika kalian ingin mengintin video youtube web programing unpas, membaha mengenai membuat framework MVC, dapat klik link dibawah ini:

Web Programing Unpas linnk : https://www.youtube.com/watch?v=tBKOb8Ib5nI&list=PLFIM0718LjIVEh_d-h5wAjsdv2W4SAtkx

sekilas mengenai chenel youtube webprograming unpas, disana merupakan chenel pembelajaran programing, terutama dalam hal webprograming, web design, programing tips dan vlog.

FrameWork MVC

Framework yang berarti adalah sebuah krangka kerja, merupakan istilah yang sering kita dengar terutama dalam dunia devloper, dengan menggunakan framework para devloper terutama dalam dunia webdevlopment yang akan kita bahas dalam artikel ini, akan sangat berpengaruh dalam kinerja pembuatan code.

dengan menggunakan framework MVC, memungkinkan seorang devlopment untuk memiliki dan menyusun code secara terstruktur dan konsisten, memungkinkan code dapat dipahami dengan mudah.

MVC atau kepanjangannya adalah Model View Controller merupakan satu design pattern yang sekarang telah dipergunakan dalam pengembangan sebuah aplikasi maupun situs web. Design pattern ini sekarang telah banyak diterapkan pada PHP framework contohnya seperti Laravel, Codeigniter, Symfony dll.

Membuat Framework MVC dengan php

MVC seperti dari namanya Model View Controller. Merupakan suatu 3 bagian terpisah, yaitu

  1. Model, yang berfungsi untuk mengatur data, fungsi dan aturan dari aplikasi
  2. View, berfungi untuk mengatur tampilan atau output yang tampil di layar, tidak hanya berupa data, namun juga termasuk komponen lain, seperti gambar, video, diagram, dan sebagainya.
  3. controller, merupakan program yang mengatur menerima input dan menjalankan beberapa perintah untuk dijalankan di model.

Kegunaan dan Tujuan Model MVC

dengan menggunakan model framework MVC, pemprograman dapat secara terstruktur dan mudah dalam kerja sama team, karena kita dapat bekerja fokus kepada bagian masing masing tanapa harus mengoprek yang lain, selain itu juga mudah dalam penggabungannya juga.

para programing dulu, sebelum menggunakan model MVC, terkadang untuk melakukan perubahan fitur, memerlukan waktu yang lama, dan ekstra perhatian yang mendalam, karena seringkali pengubahan program tanpa disengaja mengubah juga bagian tampilan yang telah dibuat sebelumnya.

dengan menggunakan model HVC ini, programer dapat melakukan perubahan dengan nyaman, misalnya seperti klient meminta untuk merubah suatu tampilan, maka programer hanya perlu fokus pada tampilan view. begitu juga dengan hal yang lain. hanya tinggal fokus kepada bagian tertentu saja, dan keuntungannya dalam pemprograman akan lebih terstruktur dan mudah.

Mengapa Membuat Framework MVC sendiri?

kentapa harus membuat framework sendiri, diluar sana juga sudah terdapat framework yang populer kebanyakan sekarang yang dipakai, contohnya seperti codeigniter.

alasan aku membuat framework, dan menurut aku tentusaja untuk belajar, namun juga membangun sebuah pondasi untuk membuat aplikasi yang nantinya aku devlop sendiri, dan menjadi hal kebanggan jika dapat menjadi suatu fortofolio profil pribadi, tentu akan sangat bermanfaat kedepannya, bukan hanya untuk mencari pekerjaan juga menjadi niali plus untuk pengalaman.

Membuat Framework MVC

langkah pertama dalam membuat sebuah framewok, karena kita menggunakan PHP, kalian perlu install sebuah web server.

baca juga cara install wordpress di localhost Xampp

kemudian kalian dapat membuat sebuah struktur folder. berikut langkahnya akan kita bahas sama sama

buat folder dengan nama frameku didalamnya buat dua buah foler dengan nama app dan public. Nantinya app adalah folder yang berisikan sistem dari aplikasi yang dibangun, dan tidak dapat diakses oleh public dan public, nantinya akan berisi komponen yang dapat diakses oleh public, contohnya seperti CSS, JS dan lain lain.

membuat framework mvc sendiri

dalam folder app buat beberapa folder diantaranya config, controller, core, modles dan views.

membuat framework mvc sendiri

berikutnya kita akan membuat beberapa struktur folder pada public.

membuat framework mvc php sendiri

pada folder public dapat diisi sesuai kebutuhan kalian, contohnya seperti punya ku, ku isi kebutuhan yang biasa ku pakai untuk membuat sebuah aplikasi atau website, seperti css, data tables, img jquery dan js.

penulis disini untuk code editor menggunakan VScode

php framework

jika kalian ingin mendapatkan software yang sama dengan penulis, dapat mengunjungi https://code.visualstudio.com/download

setelah struktur folder kalian buat, kalian dapat membuat file .htaccess berada di level direktori teratas atau nantinya akan menjadi root dari aplikasi.

isi file .htaccess

Options -Multiviews

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]

guna file .htaccess ini untuk configurasi webserver, dan nantinya akan berdampak pada url yang akan kita gunakan, agar URL tidak terlalu panjang, hal ini juga akan berdampak sangat signifikan kepada aplikasi website kita.

yang awalnya urlnya localhost/frameku/index.php&url=url akan menjadi localhost/frameku/controller/function/value/value/value/…

fungsi dari .htaccess yang kita buat yaitu untuk menyembunyikan get url=”.

berikutnya kita akan membuat sebuah file index.php

<?php

require_once 'app/init.php';

$app = new App;

pada file index.php nantinya kita akan memasukkan sebuah file lagi yang namnya init.php, yang didalamnya berisikan include semua code yang dibutuhkan.

hasil directory dan file, kurang lebih seperti gambar di atas.

berikutnya kita akan membuat sebuah file konfigurasi da route aplikasi, file tersebut akan diletakkan pada frameku->app->config. buat dua buah file php dengan nama config.php dan route.php

isi dari file config.php

<?php

//base url
define('BASEURL', 'http://localhost/frameku');

//db
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','');

isi dari file config ini berisi konfigurasi url default yang akan kita gunakan dan akan kita pangil berulang kali pada link yang akan kita terapkan. Secara singkat base url berfungsi sebagai root url, untuk mempermudah dan mengurangi herror ketika pengetikan url.

isi dari file routes.php

<?php
//set Default Controller
$route['default_controller'] = 'Home';

isi dari file routes.php ini yaitu untuk mengatur default controller, atau kontroller pertama yang akan dieksekusi ketika aplikasi dijalankan.

berikutnya kita buat file App.php, Controller.php, Database.php. Di dalam folder core

code App.php

<?php

class App {
    
    protected $controller;
    protected $method ='index';
    protected $params = [];
    public function __construct()
    {
        // controller
        require_once 'app/config/routes.php';
        $this->controller = $route['default_controller'];
        $url = $this->parseURL();

        if(is_null($url)){
           $url[0] = 'public';
        }

        if(file_exists('app/controller/'.$url[0].'.php')){
            $this->controller = $url[0];
            unset($url[0]);
            
        }
        // var_dump($url);
        

        require_once 'app/controller/'.$this->controller.'.php';
        $this->controller = new $this->controller;

        // method
        if(isset($url[1])){
            if(method_exists($this->controller, $url[1])){
                $this->method = $url[1];
                unset($url[1]);
            }
            
        }

        if(!empty($url)){
            $this->params = array_values($url);
        }

       

        // var_dump($url);
        call_user_func_array([$this->controller, $this->method], $this->params);
    }

    public function parseURL()
    {
        if(isset($_GET['url'])){
            $url = rtrim($_GET['url'],'/');
            $url = filter_var($url, FILTER_SANITIZE_URL);
            $url = explode('/', $url);
            return $url;
        }
    }
    
}

code untuk Controller.php

<?php
class Controller {
    public function view($view, $data=[]){
        require_once 'app/views/'.$view.'.php';
    }

    public function model($model){
        require_once 'app/models/'.$model.'.php';
        return new $model;
    }
}

code untuk Database.php

<?php
class Database{
    private $host = DB_HOST;
    private $user = DB_USER;
    private $pass = DB_PASS;
    private $db_name = DB_NAME;

    private $dbh;
    private $stmt;

    public function __construct()
    {
        $dsn ='mysql:host='.$this->host.';dbname='.$this->db_name;

        $option =[
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ];

        try{
            $this->dbh = new PDO($dsn, $this->user,$this->pass, $option);
        }catch(PDOException $e){
            die($e->getMessage());
        }
    }

    public function query($query)
    {
        $this->stmt = $this->dbh->prepare($query);
    }

    public function bind($param, $value, $type=null)
    {
        if(is_null($type)){
            switch(true){
                case is_int($value):
                    $type = PDO::PARAM_INT;
                    break;
                case is_bool($value):
                    $type = PDO::PARAM_BOOL;
                    break;
                case is_null($value):
                    $type = PDO::PARAM_NULL;
                    break;
                default :
                    $type = PDO::PARAM_STR;
            }
        }

        $this->stmt->bindValue($param, $value, $type);
    }

    public function execute()
    {
        $this->stmt->execute();
    }

    //memanggil data dalam jumlah banyak
    public function resultSet()
    {
        $this->execute();
        return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
    }

    //memanggil data satu aja
    public function single()
    {
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

    public function rowCount()
    {
        return $this->stmt->rowCount();
    }
}

sekarang, kita membuat sebuah file penting yang akan include semua konfigurasi, yaitu init.php, file ini diletakkan pada folder app.

isi dari code init.php

<?php

require_once 'core/App.php';
require_once 'core/Controller.php';
require_once 'core/Database.php';

require_once 'config/config.php';

okey, sekarang framework model MVC, sudah selesai kita buat. Untuk menggunakan framework ini, kita buat file controller, kita simpan pada app/controller/Controller.php

skema dalam file controller

<?php
class Nama_controler extends Controller {
    public function index()
    {
       $this->view('nama_view');
       $data['tampil'] =$this->model('admin_model')->peserta($data);
       $this->view('nama_view_dua',$data);

            }
}

kemudian, file yang digunakan untuk berinteraksi ke database, yaitu models, skema code untuk model

<?php

class Mahasiswa_model{
    private $db;

    public function __construct()
    {
       
        $this->db = new Database;
       
    }

    public function nama_function()
    {
       $this->db->query('SELECT * FROM tabel');
       return $this->db->resultSet();
    }

    public function nama_function_dua($id)
    {
        $this->db->query('SELECT * FROM tabl');
        $this->db->bind('id',$id);
        return $this->db->single();
    }
}

untuk function, kalian isikan sesuai function yang sudah dibuat sebelumnya yaitu pada file Database.php, karena kedua file ini saling berhubungan.

Untuk views nya sendiri, tidak memiliki aturan baku. Views ditampilkan jika diincludkan di controller bagian

$this->view('nama_view');

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *