Deskripsi Umum
Materi ini dirancang untuk membantu mahasiswa memahami konsep Pemrograman Berorientasi Objek (Object Oriented Programming / OOP) menggunakan bahasa PHP, melalui studi kasus pembuatan halaman login beserta database. Penyajian dibuat bertahap, konseptual, dan praktis, sehingga mudah dipahami mahasiswa dan mudah dijelaskan dosen.
Capaian Pembelajaran Mata Kuliah (Contoh)
Setelah mempelajari materi ini, mahasiswa mampu:
- Menjelaskan konsep dasar OOP (class, object, attribute, method).
- Menerapkan prinsip OOP dalam pemrograman PHP.
- Menggunakan OOP untuk mengelola koneksi database.
- Mengimplementasikan sistem login sederhana berbasis OOP.
A. Konsep Dasar OOP
1. Pengertian OOP
Pemrograman Berorientasi Objek adalah paradigma pemrograman yang berfokus pada objek, yaitu representasi dari entitas nyata yang memiliki:
- Atribut (data)
- Method (perilaku/fungsi)
Contoh dalam dunia nyata:
- Objek: User
- Atribut: username, password
- Method: login(), logout()
2. Konsep Utama OOP
a. Class
Class adalah cetak biru (blueprint) untuk membuat objek.
b. Object
Object adalah hasil instansiasi dari class.
c. Property (Atribut)
Variabel yang berada di dalam class.
d. Method
Fungsi yang berada di dalam class.
e. Encapsulation
Pembungkusan data dan method dalam satu class (menggunakan access modifier).
f. Inheritance (Pewarisan)
Class dapat mewarisi sifat dari class lain.
g. Polymorphism
Method dengan nama sama tetapi perilaku berbeda.
B. Studi Kasus: Sistem Login Mahasiswa
Gambaran Sistem
Sistem login digunakan untuk:
- Memverifikasi username dan password
- Mengambil data user dari database
- Menentukan apakah user dapat login atau tidak
C. Desain Database
1. Nama Database
db_login_oop
2. Tabel users
| Field | Tipe Data | Keterangan |
|---|---|---|
| id | INT (PK) | ID user |
| username | VARCHAR(50) | Username login |
| password | VARCHAR(255) | Password terenkripsi |
| nama | VARCHAR(100) | Nama lengkap |
3. SQL Pembuatan Tabel
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
nama VARCHAR(100) NOT NULL
);
D. Struktur Folder Aplikasi
login_oop/
│
├── config/
│ └── Database.php
│
├── classes/
│ └── User.php
│
├── login.php
└── proses_login.php
E. Implementasi OOP pada PHP
1. Class Database
Tujuan: Mengelola koneksi database menggunakan OOP
Konsep OOP yang digunakan:
- Class
- Property
- Method
- Encapsulation
Penjelasan:
- Class
Databasemenyimpan konfigurasi database - Method
connect()digunakan untuk membuka koneksi
2. Class User
Tujuan: Mengelola data dan proses login user
Atribut:
- username
- password
Method:
- login(): memeriksa kecocokan data user
Konsep OOP:
- Object sebagai representasi user
- Pemisahan logika program
F. Alur Proses Login
- User mengisi form login
- Data dikirim ke
proses_login.php - Object
Userdibuat - Method
login()dipanggil - Sistem mengecek database
- Jika sesuai → login berhasil
- Jika tidak → login gagal
G. Keuntungan Menggunakan OOP pada Studi Kasus Login
- Kode lebih terstruktur
- Mudah dikembangkan
- Mudah dipelihara
- Aman dan rapi
- Cocok untuk aplikasi skala besar
H. Tips Penjelasan untuk Dosen
- Gunakan analogi class = cetakan, object = hasil cetakan
- Jelaskan alur login sebelum masuk ke kode
- Tunjukkan pemisahan file sebagai kelebihan OOP
- Praktikkan secara bertahap
I. Latihan untuk Mahasiswa
- Tambahkan field
rolepada tabel users - Buat method
cekRole()pada class User - Tampilkan nama user setelah login berhasil
J. Ringkasan Materi
- OOP membantu pengelolaan program menjadi rapi
- PHP mendukung penuh OOP
- Studi kasus login adalah contoh paling efektif
- Pemisahan class Database dan User memudahkan pemahaman
—————————————————————————————————————————–
📄 Script Database.php
<?php
class Database
{
// Property (atribut)
private $host = "localhost";
private $db_name = "db_login_oop";
private $username = "root";
private $password = "";
private $conn;
// Method untuk koneksi database
public function connect()
{
$this->conn = null;
try {
$this->conn = new PDO(
"mysql:host=" . $this->host . ";dbname=" . $this->db_name,
$this->username,
$this->password
);
// set error mode PDO
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Koneksi database gagal: " . $e->getMessage();
}
return $this->conn;
}
}
?>
📄 Script User.php
<?php
class User
{
// Property (atribut)
private $conn;
private $table = "users";
public $username;
public $password;
public $nama;
// Constructor: menerima koneksi database
public function __construct($db)
{
$this->conn = $db;
}
// Method untuk proses login
public function login()
{
// Query mencari user berdasarkan username
$query = "SELECT * FROM " . $this->table . " WHERE username = :username LIMIT 1";
$stmt = $this->conn->prepare($query);
// Bind parameter
$stmt->bindParam(":username", $this->username);
// Eksekusi query
$stmt->execute();
// Cek apakah user ditemukan
if ($stmt->rowCount() > 0) {
$row = $stmt->fetch(PDO::FETCH_ASSOC);
// Verifikasi password
if (password_verify($this->password, $row['password'])) {
$this->nama = $row['nama'];
return true;
}
}
return false;
}
}
?>
📄 Script login.php
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Login Sistem OOP PHP</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
}
.login-box {
width: 350px;
margin: 100px auto;
padding: 20px;
background: #ffffff;
border-radius: 5px;
box-shadow: 0px 0px 10px #aaa;
}
h2 {
text-align: center;
}
input[type=text],
input[type=password] {
width: 100%;
padding: 10px;
margin: 8px 0;
box-sizing: border-box;
}
input[type=submit] {
width: 100%;
padding: 10px;
background: #2c7be5;
color: white;
border: none;
cursor: pointer;
}
input[type=submit]:hover {
background: #1a5dcc;
}
.info {
text-align: center;
color: red;
}
</style>
</head>
<body>
<div class="login-box">
<h2>Login</h2>
<form method="POST" action="proses_login.php">
<label>Username</label>
<input type="text" name="username" required>
<label>Password</label>
<input type="password" name="password" required>
<input type="submit" name="login" value="Login">
</form>
</div>
</body>
</html>
📄 Script proses_login.php
<?php
// Mulai session
session_start();
// Panggil file class
require_once "config/Database.php";
require_once "classes/User.php";
// Cek apakah tombol login ditekan
if (isset($_POST['login'])) {
// Ambil data dari form
$username = $_POST['username'];
$password = $_POST['password'];
// Buat koneksi database
$database = new Database();
$db = $database->connect();
// Buat object user
$user = new User($db);
// Set data user
$user->username = $username;
$user->password = $password;
// Proses login
if ($user->login()) {
// Simpan data ke session
$_SESSION['login'] = true;
$_SESSION['username'] = $user->username;
$_SESSION['nama'] = $user->nama;
// Redirect ke halaman dashboard (contoh)
header("Location: dashboard.php");
exit();
} else {
// Jika login gagal
echo "<script>
alert('Username atau Password salah!');
window.location='login.php';
</script>";
}
} else {
// Jika file diakses langsung tanpa form
header("Location: login.php");
exit();
}
?>
TUGAS
Buatlah Form Login seperti dibawah ini:

setelah sukses LOGIN, muncul dashboard seperti ini:

ada 3 pilihan/tombol, yaitu:
- Website Rental Mobil
- Website Rental Motor
- Logout
ketika klik tombol/link Website Rental Mobil, muncul seperti ini:

ketika klik tombol/link Website Rental Motor, muncul seperti ini:
