cv.cm

Pemrograman · Bahasa pemrograman

Tutorial PHP untuk pemula

6 menit baca

Jawaban singkat

PHP adalah bahasa scripting sisi server yang dibuat untuk web: file PHP dijalankan di server dan mengirim HTML atau JSON ke browser. Instal PHP, simpan <?php echo "Hello, world"; sebagai hello.php lalu jalankan php hello.php, atau mulai server lokal dengan php -S localhost:8000. Konsep intinya: variabel berawalan $, array yang fleksibel, fungsi dengan deklarasi tipe, class, exception, dan penanganan input pengguna yang aman.

Buka Pemformat JSON

Apa itu PHP dan untuk apa dipakai

PHP dibuat oleh Rasmus Lerdorf pada 1994; namanya kini kependekan dari "PHP: Hypertext Preprocessor". PHP berjalan di hampir semua web hosting dan menjadi tenaga bagi sebagian besar situs web, termasuk WordPress, Drupal, dan MediaWiki milik Wikipedia. Developer memakainya untuk situs konten, toko online, REST API, dan aplikasi web lengkap dengan framework seperti Laravel dan Symfony. PHP 8 modern punya sistem tipe, JIT compiler, enum, attribute, dan performa jauh lebih baik daripada versi lama.

Instal PHP dan jalankan Hello, world

Instal PHP dari php.net atau package manager (brew install php, sudo apt install php-cli, atau paket seperti XAMPP di Windows). Periksa dengan php -v. Kode PHP berada di antara tag <?php dan tag penutup ?> yang opsional.

<?php
echo "Hello, world\n";
php hello.php
# Hello, world
php -S localhost:8000    # serve the current folder at http://localhost:8000

Pada file yang hanya berisi kode PHP, hilangkan tag penutup ?>, agar tidak ada spasi nyasar yang terkirim ke browser secara tidak sengaja.

Variabel dan tipe data dasar

Nama variabel diawali $. Tipenya dinamis, tetapi Anda bisa mendeklarasikan tipe parameter dan tipe kembalian, dan declare(strict_types=1); di bagian atas file menghentikan konversi otomatis pada pemanggilan fungsi.

TipeContohCatatan
int$n = 42;64-bit di sebagian besar sistem
float$x = 3.14;Presisi ganda
string$s = "hi $name";Tanda kutip ganda melakukan interpolasi, kutip tunggal tidak
bool$ok = true;Keyword tidak peka huruf besar-kecil
array$a = [1, 2];Map berurutan: list dan dictionary dalam satu tipe
null$v = null;Tanpa nilai
<?php
$name = "Ada";
$count = 7;
echo "$name has $count items\n";        // Ada has 7 items
echo 'No $interpolation here' . "\n";   // No $interpolation here
echo intdiv($count, 2), " ", $count / 2, "\n";  // 3 3.5
var_dump((int) "12" + 1);                // int(13)

Operator . menggabungkan string; + hanya untuk angka.

Alur kontrol

<?php
$score = 72;
if ($score >= 90) {
    echo "A\n";
} elseif ($score >= 70) {
    echo "B\n";                   // B
} else {
    echo "C\n";
}

for ($i = 0; $i < 3; $i++) {
    echo $i, " ";                 // 0 1 2
}
echo "\n";

foreach (["apple", "pear"] as $fruit) {
    echo $fruit, "\n";
}

$kind = match ($day = "SAT") {   // match is strict and returns a value
    "SAT", "SUN" => "weekend",
    default => "weekday",
};
echo $kind, "\n";                 // weekend

match (PHP 8.0 ke atas) membandingkan dengan === dan melempar error bila tidak ada cabang yang cocok, berbeda dengan switch lama yang membandingkan longgar dan lanjut ke cabang berikutnya tanpa break.

Fungsi

<?php
declare(strict_types=1);

function greet(string $name, string $greeting = "Hello"): string
{
    return "$greeting, $name!";
}

echo greet("Lin"), "\n";                    // Hello, Lin!
echo greet(greeting: "Hi", name: "Lin"), "\n"; // Hi, Lin!  (named arguments)

$square = fn(int $x): int => $x * $x;       // arrow function
echo $square(5), "\n";                      // 25

function total(int ...$nums): int           // variadic
{
    return array_sum($nums);
}
echo total(1, 2, 3), "\n";                  // 6

Fitur khas: array

Array PHP adalah satu tipe fleksibel yang berfungsi sebagai list, dictionary, stack, atau queue. Key-nya berupa integer atau string, dan urutan penyisipan dipertahankan. Sekumpulan besar fungsi bawaan bekerja pada array.

<?php
$nums = [3, 1, 2];
$nums[] = 5;                       // append
sort($nums);
echo implode(", ", $nums), "\n";   // 1, 2, 3, 5

$ages = ["ann" => 31, "bob" => 25];
$ages["cy"] = 40;
foreach ($ages as $person => $age) {
    echo "$person is $age\n";
}
echo $ages["zed"] ?? 0, "\n";      // 0  (null coalescing)

$evens = array_filter($nums, fn($n) => $n % 2 === 0);
$squares = array_map(fn($n) => $n * $n, $nums);
echo json_encode(array_values($evens)), " ", json_encode($squares), "\n";  // [2] [1,4,9,25]
echo count($ages), " ", array_key_exists("bob", $ages) ? "yes" : "no", "\n"; // 3 yes

Array disalin saat penugasan (copy-on-write), berbeda dengan objek yang dikirim lewat handle.

Class, constructor promotion, dan enum

<?php
declare(strict_types=1);

enum Role: string
{
    case Admin = "admin";
    case Viewer = "viewer";
}

final class User
{
    public function __construct(
        public readonly string $name,
        public readonly Role $role = Role::Viewer,
    ) {}

    public function label(): string
    {
        return "{$this->name} ({$this->role->value})";
    }
}

$u = new User("Ann", Role::Admin);
echo $u->label(), "\n";               // Ann (admin)
echo Role::from("viewer")->name, "\n"; // Viewer

Constructor promotion (PHP 8.0) mendeklarasikan dan mengisi properti di signature constructor. Properti readonly (8.1) hanya dapat diisi sekali, dan backed enum (8.1) memetakan case ke string atau integer. Interface, abstract class, dan trait juga tersedia.

Penanganan error

PHP modern melempar exception untuk sebagian besar error. Tangkap subclass Exception untuk kegagalan yang diperkirakan; Throwable juga mencakup error engine seperti TypeError.

<?php
function parseAge(string $text): int
{
    if (!ctype_digit($text)) {
        throw new InvalidArgumentException("invalid age: $text");
    }
    return (int) $text;
}

try {
    echo parseAge("41"), "\n";   // 41
    echo parseAge("abc"), "\n";
} catch (InvalidArgumentException $e) {
    echo $e->getMessage(), "\n"; // invalid age: abc
} finally {
    echo "done\n";
}

Program kecil yang lengkap: endpoint API JSON

Simpan sebagai api.php, jalankan php -S localhost:8000, lalu buka http://localhost:8000/api.php?name=Ann. Program ini membaca parameter query, memvalidasinya, dan mengembalikan JSON.

<?php
declare(strict_types=1);

header("Content-Type: application/json; charset=utf-8");

$name = trim($_GET["name"] ?? "");
if ($name === "" || mb_strlen($name) > 50) {
    http_response_code(400);
    echo json_encode(["error" => "name must be 1 to 50 characters"]);
    exit;
}

$response = [
    "message" => "Hello, $name!",
    "length" => mb_strlen($name),
    "time" => date(DATE_ATOM),
];
echo json_encode($response, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

$_GET, $_POST, dan $_COOKIE menyimpan data request. Anggap setiap nilai di dalamnya tidak tepercaya.

Kesalahan umum pemula

  • Membandingkan dengan ==, yang mengonversi tipe; gunakan === dan !==.
  • Lupa $ pada nama variabel, atau titik koma di akhir pernyataan.
  • Menyimpan password dengan md5 atau sha1. Gunakan password_hash dan password_verify.
  • Memakai strlen pada teks UTF-8; fungsi ini menghitung byte. Gunakan mb_strlen untuk menghitung karakter.
  • Memakai PHP versi lama. Gunakan rilis PHP 8 yang masih didukung untuk perbaikan keamanan dan fitur modern.

Langkah selanjutnya

PHP Manual resmi di php.net mendokumentasikan setiap fungsi, lengkap dengan referensi bahasa dan catatan pengguna. Pelajari Composer, package manager-nya, dan standar penulisan kode PSR, lalu coba framework: Laravel atau Symfony untuk aplikasi, atau Slim untuk API kecil. PHPUnit adalah tool pengujian standar.

FAQ

Apakah PHP masih layak dipelajari?

Ya. PHP menjalankan sebagian besar web, termasuk situs WordPress, dan PHP 8 modern dengan Laravel atau Symfony adalah cara yang produktif untuk membangun aplikasi web. Lowongan untuk merawat dan membangun sistem PHP masih banyak.

Apakah PHP bahasa frontend atau backend?

Backend. PHP berjalan di server dan mengirim HTML, JSON, atau file yang sudah jadi ke browser, yang tidak pernah melihat kode PHP-nya.

Apa perbedaan echo dan print?

Keduanya menampilkan teks. echo bisa menerima beberapa argumen yang dipisah koma dan tidak mengembalikan apa pun; print menerima satu argumen dan mengembalikan 1. Dalam praktik, sebagian besar kode memakai echo.

Apa fungsi declare(strict_types=1)?

Perintah ini membuat deklarasi tipe skalar bersifat ketat untuk pemanggilan fungsi dari file tersebut, sehingga mengirim string "5" ke parameter int melempar TypeError, bukan dikonversi.

Semua tutorial pemrograman