Pengumuman

📢 Yuk, kunjungi blog kami setiap hari dan jangan lewatkan update terbaru seputar coding dan teknologi!

Wednesday, September 24, 2025

Bahasa Pemrograman PHP

Belajar PHP Lengkap — Sejarah, Dasar, OOP, Database & Praktik

Belajar PHP Lengkap — Dari Dasar Sampai Produksi

Sejarah, sintaks, form & session, OOP, PDO, keamanan, Composer, testing, dan deployment — semua disajikan praktis untuk dipelajari dan diposting di blog.

1. Pengantar & Sejarah

PHP (Hypertext Preprocessor) dibuat oleh Rasmus Lerdorf (1994) sebagai kumpulan skrip untuk memantau kunjungan laman. Evolusi: PHP/FI → PHP 3 → PHP 4 → PHP 5 → PHP 7 → PHP 8. Versi modern (PHP 7/8) fokus ke performa, tipe data, dan fitur OOP lebih baik.

Ringkasan: PHP adalah bahasa server-side; cocok untuk membuat situs & aplikasi web dinamis (WordPress, Laravel, dsb.).

2. Instalasi & Lingkungan Pengembangan

Opsi cepat: XAMPP / Laragon / MAMP atau gunakan Docker untuk lingkungan yang konsisten. Untuk produksi gunakan PHP-FPM + Nginx.

# cek versi PHP
php -v

# jalankan built-in server untuk folder 'public'
php -S localhost:8000 -t public/

Tip: selalu gunakan PHP 8.x untuk fitur modern dan performa terbaik.

3. Sintaks Dasar

File PHP berekstensi .php. Kode PHP ditempatkan di antara tag <?php ?>.

<?php
// cetak teks
echo "Halo, PHP!";

// variabel
$nama = "Andi";
$umur = 20;

// fungsi sederhana
function sapa($n) {
  return "Halo, " . htmlspecialchars($n);
}

echo sapa($nama);
?>

Catatan singkat: gunakan htmlspecialchars() ketika menampilkan input user ke HTML.

4. Form & Input Handling

Gunakan $_GET & $_POST. Selalu validasi & sanitasi input.

<!-- form.html -->
<form action="submit.php" method="post">
  <input type="text" name="nama" required>
  <button type="submit">Kirim</button>
</form>
<?php
// submit.php
$nama = filter_input(INPUT_POST, 'nama', FILTER_SANITIZE_STRING);
echo "Halo, " . htmlspecialchars($nama);
?>
Gunakan filter_input / filter_var untuk sanitasi; gunakan prepared statements untuk DB (lihat PDO).

5. Session & Cookie

Session menyimpan data di server, cookie di browser. Mulailah session sebelum output.

<?php
session_start();
$_SESSION['user'] = 'andi';

// baca session
if (isset($_SESSION['user'])) {
  echo 'Halo, ' . htmlspecialchars($_SESSION['user']);
}
?>

Untuk keamanan, set cookie attributes: HttpOnly, Secure, dan gunakan SameSite.

6. OOP di PHP (Class, Inheritance, Trait, Interface)

PHP mendukung OOP lengkap: visibility, constructor, type hints, interface & trait.

<?php
class Produk {
  private string $nama;
  private float $harga;

  public function __construct(string $nama, float $harga){
    $this->nama = $nama;
    $this->harga = $harga;
  }

  public function getNama(): string {
    return $this->nama;
  }

  public function getHarga(): float {
    return $this->harga;
  }
}

$p = new Produk('Buku', 75000.0);
echo $p->getNama(); // Buku
?>

Gunakan type hints dan declare(strict_types=1) untuk kode yang lebih aman.

7. Database: Koneksi Aman dengan PDO

Jangan pakai query langsung. Gunakan PDO + prepared statements.

<?php
$dsn = 'mysql:host=localhost;dbname=belajar;charset=utf8mb4';
$user = 'root'; $pass = '';

try {
  $pdo = new PDO($dsn, $user, $pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  ]);

  $stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
  $stmt->execute(['email' => $email]);
  $user = $stmt->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
  error_log($e->getMessage());
  echo 'Terjadi kesalahan koneksi';
}
?>
Set error mode ke ERRMODE_EXCEPTION dan jangan tampilkan pesan error DB ke user.

8. Upload & File Handling

Validasi tipe & ukuran file, simpan di folder yang aman, dan jangan simpan nama asli file langsung ke DB tanpa sanitasi.

<?php
// proses upload sederhana
if (isset($_FILES['foto'])) {
  $file = $_FILES['foto'];
  $allowed = ['image/jpeg','image/png'];
  if (in_array($file['type'], $allowed) && $file['size'] < 2_000_000) {
    $name = uniqid('img_') . '-' . basename($file['name']);
    move_uploaded_file($file['tmp_name'], __DIR__ . '/uploads/' . $name);
    echo 'Upload berhasil';
  } else {
    echo 'Tipe/ukuran file tidak sesuai';
  }
}
?>

9. Keamanan Aplikasi

  • SQL Injection: gunakan prepared statements (PDO).
  • XSS: gunakan htmlspecialchars() saat output user.
  • CSRF: gunakan token CSRF di form.
  • Password: simpan dengan password_hash() dan verifikasi dengan password_verify().
  • Rate limiting & Brute force: batasi percobaan login.
<?php
// contoh hash password
$hash = password_hash('rahasia123', PASSWORD_DEFAULT);

// verifikasi
if (password_verify($inputPassword, $hash)) {
  // login
}
?>
Selalu nonaktifkan display_errors di lingkungan produksi dan gunakan HTTPS.

10. Composer & PSR (Autoloading)

Composer adalah dependency manager; gunakan PSR-4 untuk autoloading. Contoh instal paket dan autoload:

# instal paket
composer require vlucas/phpdotenv

# contoh composer.json (PSR-4)
{
  "autoload": {
    "psr-4": {
      "App\\": "src/"
    }
  }
}

11. Debugging & Testing

Gunakan Xdebug untuk debug, PHPUnit untuk unit test, dan static analysis (PHPStan / Psalm) untuk kode lebih sehat.

12. Deployment & Performance

  • Gunakan PHP-FPM + Nginx / Apache + PHP-FPM untuk produksi.
  • Aktifkan OPcache untuk caching bytecode.
  • Gunakan load balancer & autoscaling untuk trafik besar.
  • Monitoring: New Relic, Sentry, atau Prometheus + Grafana.

13. Studi Kasus & Latihan (CRUD Sederhana)

Latihan 1: Buat aplikasi CRUD sederhana untuk Produk menggunakan PDO, prepared statements, dan session untuk autentikasi. Berikut struktur file direkomendasikan:

  • public/index.php
  • src/Database.php
  • src/ProductController.php
  • templates/*
// contoh koneksi sederhana (src/Database.php)
<?php
class Database {
  private static $pdo;
  public static function getConnection() {
    if (!self::$pdo) {
      self::$pdo = new PDO('mysql:host=localhost;dbname=belajar;charset=utf8mb4', 'root', '', [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
      ]);
    }
    return self::$pdo;
  }
}
?>
  1. Implementasikan halaman list, create (form), edit, delete.
  2. Amankan semua input dan gunakan CSRF token.
  3. Tambahkan fitur upload gambar dengan validasi.

14. Sumber & Best Practice

  • php.net (dokumentasi resmi)
  • PSR Standards (PHP-FIG): PSR-1, PSR-4, PSR-12
  • Composer, PHPStan / Psalm, PHPUnit, Xdebug
  • Keamanan: OWASP Top 10
SEO tip: pecah materi jadi seri (Dasar → Forms & DB → Keamanan & Deployment) untuk long-tail keywords.

Catatan: ganti semua placeholder https://YOUR-BLOG-URL/... dengan URL dan aset blog Anda. Untuk versi PDF, gunakan Print → Save as PDF.

© 2025 Khusnul Khuluki — Panduan PHP Lengkap. Ganti placeholder URL & gambar sesuai blog Anda.

No comments:

Post a Comment

🤖
Chat Bot
🤖 Virtual Assistant