OOP AutoLoad

Halo! Disini saya akan membagikan tentang OOP AutoLoad. Auto load berfungsi agar kita tidak perlu susah payah ketika ingin mengambil/menerapkan method dari suatu class.

Contoh interface
<?php
    interface iTemplate{
        public function setVar($nama, $var);
        public function getHtml($tem);
    }

    class Template implements iTemplate{
        private $vars=array();
        public function setVar($nama, $var){
            $this->vars[$nama]=$var;
        }
        public function getHtml($tem){
            foreach($this->vars as $nama =>$value){
                $tem=str_replace('{'.$nama.'}'$value$tem);
            }
            return $tem;
        }
    }
?>
dari contoh diatas terlihat class Template mengimpementasikan interface iTemplate. Interface sendiri merupakan sketsa dasar dari suatu class yang setiap methodnya harus diimplementasikan. Jika ada satu saja method yang tidak diimplementasikan, maka kode tidak akan jalan. Interface juga bisa mewarisi method/properti dari interface lain.

Ada juga contoh interface yang parameternya berisi objek dari class. Contohnya begini:
<?php
  interface a{
      public function foo();
  }  
  interface b extends a{
      public function baz(Baz $baz);
  }

  class C implements b
  {
      public function foo(){}
      public function baz(Baz $baz){}
  }
?>
 dalam class c yang mengimplementasikan class b, terdapat public function baz yang parameternya berisi objek dari class lain. Jika parameternya diubah menjadi objek dari class lain, maka kode dibawah ini akan gagal
class C implements b
  {
      public function foo(){}
      public function baz(Kambing $baz){}
  }


Interface yang diwarisi oleh interface lain otomatis memiliki method/atribut dari interface lain juga. Makanya, ketika diimplementasikan ke dalam suatu class maka kita juga harus menulis kembali kod eyang ada di interface
<?php
    interface a{
        public function foo();
    }
    interface b{
        public function bar();
    }

    interface c extends ab{
        public function baz();
    }

    class d implements c
    {
        public function foo();
        public function bar();
        public function baz();
    }
    
?>

Ada juga properti yang tidak bisa diubah valuenya. Cukup ditambahkan keyword const sebelum nama variabel
    interface a{
        const b='Ini Interface Konstan';
    }

    echo a::b;
Jika const b diubah di kelas lain, maka akan terjadi error


Properti juga bisa ditambahkan modifier dengan public, protected, atau private.
        public $pablik="Ini public";
        protected $protek="Ini Protekted";
        private $priv="Ini Private";
Jika modifiernya tidak ditulis maka hasilnya sama dengan public. Modifier berfungdi untuk keamanan data, Public bisa diakses oleh semua class. Private hanya bisa diakses di dalam class yang sama dan protected bisa diakses di dalam class yang sama dan class yang mengimplementasikannya.

Ini adalah contoh pengimplementasian dan hasilnya
<?php

    class Bar
    {
        public function tes(){
            $this->tesPublik();
            $this->tesPrivate();
        }

        public function tesPublik(){
            echo "Bar::tesPublik\n";
        }
        private function tesPrivate(){
            echo "Bar::tesPrivate\n";
        }
    }
    
    class Foo extends Bar
    {
        public function tesPublik(){
            echo "Foo::tesPublikFoo\n";
        }
        private function tesPrivate(){
            echo "Foo::tesPrivateFoo\n";
        }
        
    }
    

    class myClass
    {
        public function __construct(){
        }

        public function myPublic(){
            echo "pub";
        }
        protected function myProtected(){
            echo "prot";}
        private function myPrivate(){
            echo "priv";}

        function Foo(){
            $this->myPublic();
            $this->myProtected();
            $this->myPrivate();
        }
    }
    
    class myClass2 extends myClass
    {
        function Foo(){
            $this->myPublic();
            $this->myProtected();
        }
    }
    $tes=new myClass();
    $tes->myPublic();
    $tes->foo();
    $pu=new Foo();
    $pu->tes();
?>


Ini adalah contoh pendeklarasian class konstan
<?php
    class myClass{
        public const myPub='publik';
        protected const myPro='protek';
        private const myPriv='Privasi';

        public function foo(){
            echo self::myPub;
            echo self::myPro;
            echo self::myPriv;
        }
    }

    $tes=new myClass();
    $tes->foo();
?>



Dan dibawah ini contoh lain, dimana kita bisa memasukkan objek dari class ke dalam parameter

    class test{
        private $foo;
        public function __construct($foo){
            $this->foo=$foo;
        }

        private function bar(){
            echo "Ini masuk ke private";
        }

        public function baz(test $anu){
            $anu->foo='PPPPPPPP';
            var_dump($anu->foo);

            $anu->bar();
        }
    }
    $tess=new test("TEEEEES");
    $tess->baz(new test("Yang Lain"));

Komentar

Postingan Populer