PHP selalu menawarkan berbagai cara untuk mengurutkan array dan struktur data, namun API tidak selalu ekspresif. Dengan PHP 8.6, yang baru SortDirection enum meningkatkan keterbacaan dan keamanan mengetik ketika Anda perlu menentukan urutan menaik atau menurun.
Ini adalah tambahan bahasa yang kecil, namun sesuai dengan tren yang lebih luas dalam PHP modern: beralih dari flag yang diketik secara longgar dan bilangan bulat ajaib menuju API yang eksplisit dan terdokumentasi sendiri.
Mengapa SortDirection penting
Secara tradisional, fungsi pengurutan PHP mengandalkan flag seperti SORT_ASC Dan SORT_DESCatau pada panggilan balik perbandingan khusus. Meskipun familiar, konstanta ini masih berupa bilangan bulat, yang membuat kode menjadi kurang eksplisit dari yang seharusnya.
SortDirection memberi pengembang cara yang lebih jelas untuk mengungkapkan maksud:
Artinya, kode menjadi lebih mudah dibaca, lebih mudah difaktorkan ulang, dan tidak rentan terhadap penyalahgunaan yang tidak disengaja.
Sekilas tentang enum baru
Di PHP 8.6, Anda dapat bekerja dengan enum secara langsung alih-alih meneruskan flag integer mentah di tempat yang didukung oleh API.
Contoh: menggunakan SortDirection dalam kode Anda
use SortDirection;
function sortUsers(array $users, SortDirection $direction): array
{
usort($users, function (array $a, array $b) use ($direction): int {
$comparison = $a['name'] <=> $b['name'];
return match ($direction) {
SortDirection::Ascending => $comparison,
SortDirection::Descending => -$comparison,
};
});
return $users;
}
$users = [
['name' => 'Zoe'],
['name' => 'Anna'],
['name' => 'Mike'],
];
print_r(sortUsers($users, SortDirection::Ascending));
print_r(sortUsers($users, SortDirection::Descending));
Contoh ini menunjukkan salah satu manfaat utama enum baru: arahnya adalah bagian dari sistem tipe, bukan hanya konvensi.
Bandingkan dengan pendekatan lama
Sebelum SortDirectionAnda mungkin telah menulis kode seperti ini:
function sortUsers(array $users, int $direction): array
{
usort($users, function (array $a, array $b) use ($direction): int {
$comparison = $a['name'] <=> $b['name'];
if ($direction === SORT_DESC) {
return -$comparison;
}
return $comparison;
});
return $users;
}
Ini berhasil, tetapi memiliki beberapa kelemahan:
-
int $directiontidak mengkomunikasikan makna serta enum -
bilangan bulat apa pun dapat diteruskan secara tidak sengaja
-
API bergantung pada mengingat konstanta mana yang memetakan perilaku mana
Dengan SortDirectioncompiler dan runtime dapat membantu Anda mengungkapkan maksud dengan lebih jelas.
Kasus penggunaan praktis
Kemungkinan besar Anda akan mendapat manfaat darinya SortDirection dalam kode yang memperlihatkan penyortiran sebagai fitur yang dapat dikonfigurasi, misalnya:
-
dasbor admin dengan urutan yang dapat dipilih pengguna
-
Titik akhir API dengan
sort=asc|desc -
pembantu pengumpulan yang dapat digunakan kembali
-
logika penyortiran di dalam layanan domain
Contoh: memetakan masukan permintaan ke SortDirection
use SortDirection;
function directionFromString(string $value): SortDirection
{
return strtolower($value) === 'desc'
? SortDirection::Descending
: SortDirection::Ascending;
}
$direction = directionFromString($_GET['direction'] ?? 'asc');
Hal ini menjaga batasan antara input pengguna dan logika internal tetap eksplisit. Parsing string sekali, lalu kerjakan dengan enum yang diketik dengan kuat di seluruh aplikasi.
Lebih cocok untuk basis kode PHP modern
Pengenalan SortDirection mungkin tampak sederhana, namun sejalan dengan arah yang diambil PHP dalam versi terbaru:
Untuk tim yang mengelola aplikasi Symfony atau PHP yang lebih besar, perubahan ini mengurangi beban kognitif. Peningkatan kecil pada kejelasan API dapat menghemat waktu setiap kali pengembang di masa mendatang meninjau kembali kodenya.
Apa artinya ini bagi Symfony dan desain aplikasi
Meskipun kode kerangka kerja Anda tidak terekspos secara langsung SortDirection namun, Anda masih dapat mengadopsi pola tersebut dalam kode aplikasi Anda sendiri.
Misalnya, saat membuat pengontrol atau layanan Symfony yang menangani penyortiran, Anda dapat:
-
menerima string dari permintaan
-
memvalidasi dan menormalkannya
-
ubah menjadi
SortDirection -
gunakan enum di domain atau lapisan layanan Anda
Pemisahan tersebut membantu menjaga pengontrol tetap tipis dan logika bisnis dapat dibaca.
use SortDirection;
final class UserSorter
{
public function sort(array $users, SortDirection $direction): array
{
usort($users, function (array $a, array $b) use ($direction): int {
$result = $a['createdAt'] <=> $b['createdAt'];
return $direction === SortDirection::Ascending ? $result : -$result;
});
return $users;
}
}
Kode semacam ini mudah untuk diuji dan diperluas.
Hal-hal yang perlu diingat
Beberapa catatan praktis saat mengadopsi enum baru:
-
periksa versi PHP minimum Anda sebelum menggunakannya
-
pertahankan penguraian masukan di tepi aplikasi
-
lebih suka enum dalam kode domain Anda, meskipun antarmuka eksternal masih menggunakan string
-
menggunakan
matchatau percabangan eksplisit ketika arah mempengaruhi logika bisnis
Kesimpulan
SortDirection adalah tambahan kecil, namun mencerminkan prinsip penting dalam PHP modern: membuat maksud menjadi eksplisit.
Jika Anda sedang membangun aplikasi yang dapat dipelihara, terutama dalam basis kode berbasis Symfony, mengadopsi enum seperti ini dapat membuat API Anda lebih jelas dan kode Anda lebih mudah untuk dipikirkan.
Seiring dengan terus berkembangnya PHP, peningkatan bertahap inilah yang sering kali memberikan dampak terbesar sehari-hari bagi tim pengembangan.
PakarPBN
A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.
In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.
The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.
