Anda di halaman 1dari 8

Nama : Nazarudin

NIM : H1101221005
Matkul : Pemrograman Berorientasi Objek

1. Autoload
Autoload adalah cara mempersingkat file php dengan memisahkan kode-kode seperti
class dan objek dalam file yang terpisah, untuk membuat kode php menjadi lebih
terorganisir dan mudah dibaca.
Contoh: kode yang masih belum menggunakan namespace.
<?php

class Pegawai
{
public int $nip;
public string $nama;
private int $no_hp;
public string $alamat;

public function __construct($nip, $nama, $no_hp, $alamat)


{
$this->nip = $nip;
$this->nama = $nama;
$this->no_hp = $no_hp;
$this->alamat = $alamat;
}

public function cekIn() : bool


{
return true;
}
public function cekOut() : bool
{
return true;
}
public function getNoHp() : int
{
return $this->no_hp;
}

public function setNoHp(int $no_hp)


{
if (is_int($no_hp) && $no_hp > 1){
$this->no_hp = $no_hp;
} else {
return false;
}
}
}

$ijal = new Pegawai(197111111, "Ijal", 62811111, "tepi jalan");


echo "\nNIP\t: ".$ijal->nip;
echo "\nNama\t: ".$ijal->nama;
echo "\nNo HP\t: ".$ijal->getNoHp();
echo "\nAlamat\t: ".$ijal->alamat."\n\n";

echo "{$ijal->nama} adalah pegawai yang beralamat di {$ijal->alamat}";


Setelah menggunakan namespace:
1. File Pegawai.php
<?php

class Pegawai
{
public int $nip;
public string $nama;
private int $no_hp;
public string $alamat;

public function __construct($nip, $nama, $no_hp, $alamat)


{
$this->nip = $nip;
$this->nama = $nama;
$this->no_hp = $no_hp;
$this->alamat = $alamat;
}

public function cekIn() : bool


{
return true;
}
public function cekOut() : bool
{
return true;
}
public function getNoHp() : int
{
return $this->no_hp;
}

public function setNoHp(int $no_hp)


{
if (is_int($no_hp) && $no_hp > 1){
$this->no_hp = $no_hp;
} else {
return false;
}
}
}
2. File membuat_object_ijal.php
<?php
require_once 'Pegawai.php';

$ijal = new Pegawai(197111111, "Ijal", 62811111, "tepi jalan");


echo "\nNIP\t: ".$ijal->nip;
echo "\nNama\t: ".$ijal->nama;
echo "\nNo HP\t: ".$ijal->getNoHp();
echo "\nAlamat\t: ".$ijal->alamat."\n\n";

echo "{$ijal->nama} adalah pegawai yang beralamat di {$ijal->alamat}";

Dalam autoload, kita dapat menggunakan include atau include_once, dan require atau
require_once.
a. Include
Include menyertakan isi dari file satu ke file lainnya secara utuh. Cara kerja include
sama seperti kita men-copy paste kode yang ada pada kode file satu ke kode file lain.
Misalnya ada sebuah file yang bernama saya.php
<?php

echo "Ini dari saya \n";

Lalu ada file Ruang.php yang berisi include ke file saya.php tadi
<?php

include 'saya.php';
echo "Ini dari ruang";

Maka outputnya adalah:


Ini dari saya
Ini dari ruang
Dapat disimpulkan bahwa include itu sama seperti halnya kita melakukan copy-
paste. Kode yang terdapat pada file saya.php, dipaste-kan ke dalam file Ruang.php.
Namun saat melakukan include, pastikan file yang dipanggil ada dalam satu folder,
misalnya file tersebut tidak ada, maka kode include itu akan error, dan dilanjutkan
dengan menjalankan kode yang ada di bawahnya. Misalnya pada file Ruang.php:
<?php

include 'Dirimu.php';
echo "Ini dari ruang";
Maka output yang akan muncul adalah:
Warning: include(Dirimu.php): Failed to open stream: No such file or
directory in C:\laragon\www\pbo\Ruang.php on line 3

Warning: include(): Failed opening 'Dirimu.php' for inclusion


(include_path='.;C:/laragon/etc/php/pear') in C:\laragon\www\pbo\
Ruang.php on line 3
Ini dari ruang
“Ini dari ruang” tetap muncul, namun kode diatasnya error karena filenya tidak ada
dalam folder tersebut.
Inluce juga bisa berkali-kali, contoh, pada file Ruang.php:
<?php

include 'saya.php';
include 'saya.php';
include 'saya.php';
echo "\nIni dari ruang";
include 'saya.php';
include 'saya.php';
Output yang dihasilkan:
Ini dari saya
Ini dari saya
Ini dari saya
Ini dari ruang
Ini dari saya
Ini dari saya
b. Include_once
Bedanya dengan include saja adalah: pada include_once, dia hanya akan
menjalankan kode sekali saja, jika sudah pernah dijalankan, maka kode tersebut
tidak akan dijalankan lagi. Contoh, pada file Ruang.php:
<?php

include_once 'saya.php';
include_once 'saya.php';
include_once 'saya.php';
echo "\nIni dari ruang";
include_once 'saya.php';
include_once 'saya.php';
Maka output yang ditampilkan adalah:
Ini dari saya
Ini dari ruang

c. Require
Require mirip dengan include, yaitu bisa memasukkan isi file satu ke file lain.
Misalnya pada file saya.php:
<?php

echo "\nIni dari saya";


Kemudian pada file Ruang.php:
<?php

require 'saya.php';
echo "\nIni dari ruang";
Maka output yang ditampilkan akan sama persis dengan penggunaan include:
Ini dari saya
Ini dari ruang

Perbedaan dari include dan require adalah: jika kode include error, maka sistem akan
melanjutkan untuk menjalankan kode di bawahnya. Namun pada require jika terjadi
error, maka seluruh kode tidak akan dijalankan. Contoh:
Misalnya pada file Ruang.php dipanggil file yang tidak terdapat dalam folder yang
sama:
<?php

require 'Dirimu.php';
echo "Ini dari ruang";
Maka output yang akan muncul adalah:
Warning: require(Dirimu.php): Failed to open stream: No such file or
directory in C:\laragon\www\pbo\Ruang.php on line 3
Fatal error: Uncaught Error: Failed opening required 'Dirimu.php'
(include_path='.;C:/laragon/etc/php/pear') in C:\laragon\www\pbo\
Ruang.php:3
Stack trace:
#0 {main}
thrown in C:\laragon\www\pbo\Ruang.php on line 3
Maka akan muncul error pada require, dan kode di bawahnya juga tidak dijalankan.
Jadi itulah yang membedakan include dan require.
d. Require_once
Require_once umumnya digunakan pada saat pemanggilan class, karena class
biasanya cukup dipanggil satu kali saja. Misalnya terdapat class Lingkaran dan Bola.
Pada file Lingkaran.php:
<?php
class Lingkaran
{
const PHI = 3.14;
public $jari_jari;
public function __construct($jari_jari) {
$this->jari_jari = $jari_jari;
}

public function luas() : float {


return self::PHI * $this->jari_jari * $this->jari_jari;
}

public function keliling() : float {


return 2 * self::PHI * $this->jari_jari;
}
}

Pada file Bola.php:


<?php
class Bola
{
const PHI = 3.14;
public $jari_jari;
public function __construct($jari_jari) {
$this->jari_jari = $jari_jari;
}
public function volume() : float {
return (4/3) * self::PHI * pow($this->jari_jari, 3);
}
}

Maka pada file membuat_objek_perhitungan.php:


<?php

require_once 'Lingkaran.php';
require_once 'Bola.php';

$lingkaran = new Lingkaran(4);


$luas_lingkaran = $lingkaran->luas();
$keliling_lingkaran = $lingkaran->keliling();
echo "\nLuas Lingkaran : " . $luas_lingkaran . " cm2";
echo "\nKeliling Lingkaran : " . $keliling_lingkaran . " cm";

$bola = new Bola(4);


$vbola = $bola->volume();
echo "\nVolume Bola : " . $vbola . " cm3";
Output yang ditampilkan
Luas Lingkaran : 50.24 cm2
Keliling Lingkaran : 25.12 cm
Volume Bola : 267.94666666667 cm3

2. Namespace
Namespace ini bisa dibilang sama seperti saat kita meng-enkaptulasi, yaitu membungkus
suatu kelas ke dalam beberapa model.
Misalnya pada sebuah file sebagai berikut:
<?php

class Mahasiswa
{
public $nama;

public function inputLirs(){


return true;
}

class Mahasiswa{
public $ipk;

public function hitungIpk(){


return true;
}
}
Pada kode tersebut terdapat dua class yang sama, walaupun memiliki kegunaan yang
berbeda, namun ini tidak akan bisa untuk dijalankan. Oleh karena itu, maka digunakan
namespace, untuk mengelompokkan class berdasarkan nama peruntukkannya.
Contoh:
<?php

namespace Admin;
class Mahasiswa
{
public $nama;

public function inputLirs(){


return true;
}
}

namespace Mahasiswa;
class Mahasiswa{
public $ipk;

public function hitungIpk(){


return true;
}
}
Dengan menambahkan namespace seperti kode di atas, maka masalah kesamaan nama
class tersebut terselesaikan. Karena kedua class tersebut masing-masing berada pada dua
kelompok yang berbeda.
Jika misal ingin menambahkan class Dosen pada namespace Admin, maka cukup
tambahkan “namespace Admin;” pada atas class tersebut.
<?php

namespace Admin;
class Mahasiswa
{
public $nama;

public function inputLirs(){


return true;
}
}

namespace Mahasiswa;
class Mahasiswa{
public $ipk;

public function hitungIpk(){


return true;
}
}

namespace Admin;
class Dosen
{
public $nama;

public function memberiNilai(){


return true;
}
}
Dengan ini bisa dikatakan bahwa class Mahasiswa yang pertama, dan class Dosen berada
pada satu kelompok yang sama, yaitu kelompok Admin. Setelah ini baru tinggal
dipisahkan ke dalam file masing-masing.
Dapat disimpukan bahwa namespace bisa dibilang sebagai identitas dari class, yakni
berada pada kelompok yang mana.

Penulisan namespace juga bisa seperti penulisan nama folder, namun dengan
menggunakan backslash. Contoh:
<?php

namespace Admin\Models;
class Mahasiswa
{
public $nama;

public function inputLirs(){


return true;
}
}

namespace Mahasiswa;
class Mahasiswa{
public $ipk;

public function hitungIpk(){


return true;
}
}

namespace Admin\Models;
class Dosen
{
public $nama;

public function memberiNilai(){


return true;
}
}
Pada kode tersebut terdapat Admin\Models, namun tidak berarti file tersebut harus
berada di dalam folder Admin>Models
Suatu kelas jika sudah diberi namspace, maka akan terdapat perubahan saat ingin
menjalankan programnya. Cara menggunakan program yang sudah diberi namespace
adalah dengan menggunakan “use” sebelum menambahkan objek.
Misalnya jika kita ingin menggunakan class Dosen:
use Admin\Models Dosen;
$dosen = new $dosen;
Dapat disimpulkan, saat ingin menggunakan sebuah class, maka harus menuliskan use
terlebih dahulu dilanjutkan dengan nama namespacenya.

Namun jika membuat kode program yang mengandung autoload atau namespace, harus
menggunakan composer, yang harus diinstall terlebih dahulu di komputer.

Anda mungkin juga menyukai