7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

PHP 101

Read Time: 16 mins

Indonesian (Bahasa Indonesia) translation by Andy Nur (you can also view the original English article)

Tidak bisa disangkal bahwa kita sekarang berada pada industri yang sangat sulit. Pernah mempertimbangkan belajar bahasa kedua? Nah, bagaimana dengan lima? Itulah yang akan dituntut darimu, jika kamu berniat menjadi pengembang web modern. Dengan pertimbangan ini, jika kamu tidak berhati-hati, sangat cepat, kamu mungkin menemukan dirimu kewalahan, karena kamu menatap buta pada artikel blog membingungkan yang tak terhitung jumlahnya, atau buku-buku teknis.

Kuncinya, seperti halnya apa pun, adalah mengambil satu langkah pada satu waktu.

Kuncinya, seperti halnya apa pun, adalah mengambil satu langkah pada satu waktu. Apakah kamu menyalahkan diri sendiri karena tidak belajar bahasa lisan dalam sebulan? Tentu saja tidak. Kemudian terapkanlah tingkat pemikiran yang sama ke perjalanan pemrogramanmu. Hal-hal ini membutuhkan waktu, tetapi, selama kamu terus mendorong ke depan, kamu akan berada di sana dalam waktu singkat. Jangan berhenti!

Langkah pertama adalah HTML. Memahami apa tujuan <div> disediakan. Pelajari cara menyusun konten menggunakan tag semantik. Membuat halaman web dasar yang tidak di style.

Langkah kedua, seperti yang kamu duga, adalah CSS. Mempelajari cara membuat elemen pada halaman. Pahami apa yang dimaksud dengan "pemisahan masalah", dan bagaimana ini berlaku untuk HTML dan CSS-mu. Selesaikan website sederhana pertamamu.

Langkah ketiga adalah ketika pengembang memulai bercabang ke dalam spesialisasinya sendiri. Pada titik ini, kamu bisa terjun ke dunia JavaScript, yang sedang booming tidak seperti sebelumnya. Atau, kamu bisa memfokuskan usahamu pada backend.

Masih bingung dengan perbedaan antara frontend dan backend? Pikirkan frontend sebagai ujung gunung es yang meruntuhkan Titanic. Ini adalah bagian dari aplikasi yang terlihat oleh pengguna, dan dapat berinteraksi dengannya. Backend, di sisi lain, menangani segala sesuatu dari parsisten, untuk validasi, untuk routing.

Untuk keperluan artikel ini, mari kita asumsikan bahwa kamu telah memilih opsi terakhir; server side, itu!

Tidak bisa disangkal fakta bahwa PHP mendominasi web.

Sayangnya, sekali lagi, kamu menemukan beberapa jalur untuk diambil. Haruskah kamu memilih opsi yang paling populer - PHP? Bagaimana dengan Ruby? Anak-anak yang keren sepertinya lebih suka yang ramai pada hari-hari ini. Kemudian lagi, bagaimana jika kamu memiliki jenggot? Apakah Python adalah pilihan yang tepat. Namun, yang paling penting adalah, bagaimana kamu bisa membuat pilihan, ketika kamu tidak memiliki pengalaman?

Dalam situasi seperti ini - dan menurut pendapat penulis ini - tidak ada pilihan yang salah. Dan, tentu saja, tidak ada hal yang melarang kamu beralih ke jalan. Bahkan, semua pengembang didorong untuk mempelajari banyak bahasa! Untuk saat ini, bagaimanapun, kuncinya adalah memilih satu saja, dan mempelajarinya dengan baik.

Meskipun benar bahwa PHP bukan bahasa yang paling indah, tidak ada yang menyangkal fakta bahwa ia mendominasi web. Bahkan, merupakan bahasa scripting yang paling populer di dunia. Manfaatnya adalah kamu dapat yakin bahwa setiap pertanyaan PHP telah ditanyakan, diselesaikan, dan didokumentasikan. Ada kenyamanan dalam mengetahui ini. Meskipun kamu berada di tahap paling rapuh dari pembelajaranmu, komunitas yang besar dan ramah berada di depan pintumu, yang siap membantu. Bahkan lebih baik lagi, PHP mengalami renaissance modern tidak seperti sebelumnya, berkat tool seperti Composer dan Laravel.


Apa itu PHP?

PHP, akronim untuk PHP: Hypertext Preprocessor (ya, pengembang menyukai lelucon rekursif mereka), adalah bahasa scripting yang dibangun khusus untuk web. Peluangnya tinggi, meskipun, bahwa ini masih tidak berarti bagimu. Bahasa scripting? Hah? Kapan kamu akan menjangkau PHP melalui HTML sederhana? Yah, mungkin contohnya ada dalam urutan. Dengan asumsi kamu telah berhasil menginstal PHP, buatlah file index.php dalam folder baru di desktop-mu, dan tambahkan:

Ya, itu adalah contoh "hello world" yang ada dimana-mana yang akan menjadi sangat lazim dengan kemajuan skillmu. Setiap bahasa/framework/tool memiliki satu!

Untuk menjalankan kode ini, menggunakan PHP bawaan server. Beralih ke tool command line favoritmu (Terminal, untuk pengguna Mac), cd ke folder proyek, dan jalankan server dengan php -S localhost: 8888. Perintah ini diterjemahkan menjadi, "Jalankan server, dan buat ia agar dapat diakses dari browser saya di localhost, port 8888." Lanjutkan dan cobalah! Buka Google Chrome, telusuri ke localhost:8888, dan kamu akan melihat "Hello world*" di halaman tersebut! Bagus! echo adalah konstruksi bahasa yang tidak lebih dari mengeluarkan nilai yang diberikan.

Tips: MAMP dan WAMP adalah solusi praktis yang sangat baik untuk menginstal PHP, MySQL, dan Apache pada Mac atau PC-mu, tanpa harus meraba-raba dengan command line. Mereka dapat menjadi pilihan yang membantu dalam tahap awal pembelajaranmu.

WampServer adalah lingkungan kerj pengembangan yang memungkinkan untuk menginstalasi PHP, Apache, dan MySQL dengan praktis.

Perlu biakui, hal ini bukan yang paling menarik di dunia. Bahkan, kamu mungkin berpikir pada dirimu sendiri, "Mengapa saya tidak bisa menulis 'Hello world' langsung ke halaman HTML, dan menghapus kebutuhan untuk PHP bersama-sama?" Itu benar; untuk contoh ini, tidak ada gunanya. Namun, bahasa scripting seperti PHP menjadi sangat berguna ketika output harus bersifat dinamis. Bagaimana jika, daripada world, kamu ingin memberi salam untuk mereferensikan nilai yang dilewatkan melalui querystring URL (teks di bilah alamat yang muncul setelah tanda tanya). Inilah contoh yang diperbarui, yang menyelesaikan hal itu!

Ahh, ini memperkenalkan beberapa teknik baru. Pertama, periode tunggal yang memisahkan string Hello dan $_GET yang membingungkan memungkinkanmu untuk menggabungkan (atau mengelompokkan) nilai. Dalam hal ini, kita ingin mencetak "Hello, *" dan kemudian nilainya diwakili oleh $_GET ['person']. Inilah yang kita sebut sebagai array super-global. Demi kesederhanaan, anggap ini sebagai cara untuk *GET suatu nilai dari querystring URL.

Uji ini dengan memuat localhost:8888/?person=Joe. Jika dikonfigurasi dengan benar, halaman web sekarang seharusnya menampilkan "Hello, Joe." Bermainlah dengan ini dengan mengganti Joe dengan namamu sendiri. Perhatikan bagaimana output diperbarui setiap kali halaman di-refresh? Ini tidak akan mungkin dengan HTML statis.

Salah satu kunci pemrograman yang matang adalah mempertimbangkan setiap jalur yang mungkin melalui kodemu. Misalnya, bagaimana jika tidak ada key person yang tersedia? Mungkin string kueri akan dihilangkan seluruhnya. Dalam hal ini, kesalahan pasti akan dilemparkan, karena key person tersebut tidak akan ada. Apa solusinya? Meskipun benar bahwa ini tidak lebih dari contoh yang sederhana, hal ini masih penting untuk mempertimbangkan semua hasil yang memungkinkan. Mari berikan suatu nilai default.

Meskipun ada cara yang lebih efisien untuk memungkinkan hal ini, contoh di atas adalah titik awal yang sangat baik. Ini juga pengantar pertamamu ke pernyataan kondisional. Dekati kodemu dengan cara yang sama seperti kamu menangani skenario dalam kehidupan nyata. Misalnya, "Jika kita kehabisan susu, pergilah ke toko. Jika tidak, tetaplah di rumah." Jalan pemikiran ini dapat diterjemahkan ke PHP, menggunakan logika berikut:

Dalam sedikit kode ini, hanya satu baris teks yang akan dicetak ke layar. Nilai dari variabel (suatu nilai dinamis), $outOfMilk, akan menentukan aliran pengaturannya.

Tips: Untuk mendeklarasikan variabel dalam PHP, awali nama apa pun dengan tanda dolar. Sebagai praktik terbaik, pilih nama variabel yang dapat dibaca daripada alternatif yang sulit.

Kembali ke contoh sebelumnya, selama $_GET ['person'] diatur (anggap ini sebagai nama samarang untuk "is avaliable"), lalu buat variabel $person baru yang sama dengan nilainya. Jika tidak, terapkan suatu nilai default. Jika kamu kembali ke browser, seharusnya sekarang sudah berfungsi dengan benar, terlepas dari apakah key person ada di querystring.

Keamanan

Sayangnya, kita masih belum bebas dari rumah. Kunci dari praktik pemrograman terbaik adalah menempatkan keamanan di garis depan setiap tindakan. Bahkan dengan contoh yang sangat mendasar ini, kita telah membuka pintu ke salah satu masalah keamanan yang paling luas di web: XSS (Cross-Site Scripting). Pemahaman yang benar tentang ini benar-benar di luar lingkup pelajaran pengantar ini (seluruh buku telah ditulis di atasnya), namun, inilah ilustrasi dasar: bagaimana jika $_GET['person'] sama dengan, bukan string, tetapi script?

Karena nilai ini belum disanitasi, setelah eksekusi, di beberapa browser, kotak peringatan akan ditampilkan.

Browser berbasis webkit (anggaplah Chrome dan Safari) sekarang memberikan perlindungan terhadap serangan semacam ini. Namun, ini tidak selalu terjadi, dan masih belum ada di Firefox dan Internet Explorer.

Astaga! Kita tidak bisa memiliki itu. Sementara masyarakat modern mengatakan bahwa seorang manusia tidak bersalah sampai terbukti bersalah, hal yang sama tidak berlaku untuk dunia pemrograman. Semua masukan pengguna bersalah sampai dibersihkan! Berikut ini contoh terbaru yang melakukan hal ini:

Dengan modifikasi ini, jika seseorang mencoba serangan XSS, kita akan siap! htmlspecialchars adalah fungsi asli PHP yang menerjemahkan berbagai simbol ke bagian-bagian entitasnya. & menjadi &amp;, < menjadi &lt;, dll. Ini menjadikannya alat yang sempurna untuk memberikan keamanan ekstra. <script> tidak ada artinya jika dikonversi menjadi &lt;script&gt; sebelum dieksekusi. Pengguna hanya akan melihat:

Bagus; tidak ada salahnya dilakukan!


Fungsi

Sementara kapal PHP dengan sejumlah fungsi aslinya, pasti akan ada saat-saat ketika kamu membutuhkan milikmu sendiri. Untungnya, hal itu mudah untuk ditulis.

Pikirkan suatu fungsi sebagai bagian logika yang dapat digunakan kembali yang dapat dipisahkan, sehingga dapat diidentifikasi dan dipanggil, menggunakan nama yang dapat dibaca.

Mungkin kamu menjalankan klub malam (tidak mungkin jika kamu membaca ini!), Dan membutuhkan cara mudah untuk menerima tanggal lahir seseorang, dan menghitung apakah dia setidaknya berusia dua puluh satu tahun. Fungsi khusus akan menjadi cara terbaik untuk menyelesaikan tugas ini.

Langkah pertama adalah mendefinisikan fungsi baru, yang disebut isAdult. Fungsi dapat menerima inputan luar, yang kemudian dapat dioperasikan. Ini memungkinkan data yang dikembalikan dari fungsi menjadi dinamis. Dalam kasus ini, untuk menentukan apakah seseorang adalah seorang dewasa, kita perlu tahu mereka tahun kelahiran. Langkah terakhir adalah mengembalikan nilai true atau false, tergantung pada apakah tahun saat ini dikurangi tanggal kelahiran seseorang setidaknya dua puluh satu.

Ini sangat sederhana! Sekarang, kita hanya perlu meneruskannya ke penjaga. Suatu fungsi dapat dipicu, atau dipanggil, dengan mereferensikan namanya, diikuti oleh seperangkat tanda kurung: isAdult(). Namun, jika fungsi tersebut memerlukan argumen, maka kamu dapat menentukannya dalam kurung ini, seperti yang digambarkan di bawah ini:

Ada satu masalah dengan fungsi isAdult ini. Tahun ini telah dikodekan dengan keras. Tentu, ini akan berhasil sepanjang 2013, tapi bagaimana dengan tahun depan? Tampaknya nilai ini juga perlu dibuat dinamis. PHP menyediakan fungsi date, yang dapat digunakan untuk menghitung tahun saat ini. Dengan demikian, fungsi dapat diperbarui ke:


Array

Maju beberapa bulan, dan, sekarang, klub malam tersebut melakukan hal yang lebih baik dari sebelumnya. Kenyataannya, itu berjalan dengan baik sampai titik dimana penjaga tidak bisa mengikuti. Pekerjaannya mungkin lebih mudah jika ia bisa menyaring melalui sekelompok orang pada suatu waktu.

Pikirkan sebuah array sebagai wadah untuk data yang terkait. Kamu bahkan dapat merujuknya sebagai daftar: daftar tweet, sekelompok anggota keluarga, array tanggal lahir.

Array dalam versi terbaru PHP (5.4) dapat didefinisikan menggunakan daftar yang dipisahkan koma dalam tanda kurung, seperti:

Variabel $gorup ini sekarang berisi beberapa tanggal lahir. Nilai-nilai di dalamnya dapat diakses dengan menentukan indeks, seperti $group[0]. Array adalah apa yang kita sebut sebagai nol berbasis. Dalam artiannya, ini berarti item pertama, atau key, yang di dalam array akan memiliki indeks nol. Dengan demikian, untuk mengakses nilai 1992, kamu akan mereferensikan $group[2].

Sekarang, penjaga dapat dengan cepat menyaring tanggal lahirnya, dan menghitung apakah akan mengizinkan orang itu masuk, atau menolaknya. Pernyataan foreach dapat digunakan untuk jenis penyaringan ini.

Perhatikan bagaimana penjaga menyatakan bahwa tahun kelahiran untuk foreach (setiap) orang di dalam group (kelompok) seharusnya terkandung dalam variabel, $yob. Selanjutnya, seperti yang dia lakukan sebelumnya, dia meneruskan nilai itu ke fungsi isAdult, dan melanjutkannya.

Namun, ada kemungkinan bahwa penjaga akan menjadi bingung ketika dia tidak memiliki hubungan antara tahun kelahiran seseorang dan namanya. PHP juga memungkinkan untuk array asosiatif, yang menyediakan fungsionalitas yang diperlukan untuk mengasosiasikan nilai yang diberikan dengan kunci. Inilah contohnya:

Itu lebih baik. Sebagai bonus tambahan, penjaga bisa sedikit lebih ramah kepada orang itu, sekarang dia tahu namanya.

Saat menyimpan string dalam tanda petik dua, kamu dapat mengumpulkan variabel daripada menggunakan penggabungan. Ini dapat digunakan untuk sintaks yang lebih mudah dibaca.


Class

Pemrograman berorientasi objek jauh di luar ruang lingkup tutorial ini, tetapi, bagaimanapun, class layak untuk disebutkan. Untuk saat ini, anggap saja sebagai wadah sederhana untuk properti dan metode terkait. Sebagai contoh, inilah cara suatu class yang mewakili satu orang mungkin akan terlihat:

Perhatikan bahwa itu metode __construct()? Ini disebut sebagai magic method, dan akan dipicu segera setelah Instansiasi. Ketika metode ini diaktifkan, ia akan menerima nama dan umur, dan kemudian melampirkan itu ke objek.

Untuk menggunakan class ini, coba:

Ini akan membuat instance baru dari class Person. Instance ini, yang disimpan dalam variabel $me, dapat disebut sebagai objek. Sekarang, tidak ada yang melarangmu membuat beberapa instance dari class ini - dan, pada kenyataannya, dalam proyek sesungguhnya, kamu akan melakukannya! Class hanyalah sebuah blueprint.

Pada titik ini, mesikupun class tidak terlalu berguna. Mari kita tambahkan metode, atau fungsi, untuk menunjuk pasangan seseorang.

Kode yang dimodifikasi ini sekarang termasuk metode marry() yang akan memperbarui properti $spouse pada objek tersebut. Sekarang, kamu memiliki hubungan langsung antara dua orang.

Jika argumen metode didahului oleh nama class (Person $spouse), maka disebut sebagai tipe mengisyaratkan, ini menunjukkan bahwa parameter harus menjadi instance dari class yang diberikan, atau kesalahan akan dilepaskan.

Untuk mengambil nama pasangan saya, kamu bisa menulis:

Konsep pemrograman berorientasi obyek jauh lebih dalam dari ini, tetapi biarkan tetap sederhana untuk saat ini. Ini membantu untuk memikirkan class sebagai kata benda tunggal: tweet, atau pengguna, atau pelanggan, atau file.

Apresiasi sejati untuk pola ini hanya akan datang seiring waktu.

Tangan Diatas

Tempatkan keterampilan baru yang kamu temukan untuk ujian. Bagaimana kamu bisa mendaftar dan menampilkan tweet untuk pengguna di halaman? Nah, langkah pertama yang mungkin adalah mendefinisikan class yang mewakili Tweet tunggal. Class ini seharusnya menyimpan properti untuk isi tweet, serta tanggal publikasinya. Selain itu, harus dipastikan bahwa isi tweet tidak melebihi 140 karakter. Berikut ini tusukan pertama di class yang seperti itu:

Meskipun awalnya mungkin tampak luar biasa, berikan potongan kode ini sedikit pembelajaran, dan cobalah pahami apa yang terjadi pada setiap langkahnya. Kamu mungkin menemukan bahwa itu cukup mudah dibaca!

Salah satu fungsi baru yang menarik berasal dari metode setBody. Jika teks yang disediakan melebihi 140 karakter, yang dapat kita hitung menggunakan fungsi strlen PHP, maka kita harus mengambil pengecualian untuk itu, karena melanggar aturan tweet. Pengecualian dapat dilemparkan menggunakan sintaks, throw new ExceptionType.

Sekarang kita memiliki wadah yang cukup layak untuk sebuah tweet, kita dapat membuat beberapa tweets, menyimpannya dalam sebuah array, dan kemudian, akhirnya, merendernya di halaman, menggunakan pernyataan foreach.

Setelah melihat output di browser, kamu akan melihat sesuatu di sepanjang baris:

Luar biasa, tetapi bagaimana cara kita menyimpan tweet itu?


Penyimpanan

Sejauh ini, kamu telah mempelajari hal-hal penting: variabel, kondisional, fungsi, array, class. Ada lebih banyak hal yang harus dibahas, tetapi kamu harus melakukan riset sendiri, ketika diperlukan. Langkah selanjutnya dalam pembelajaranmu adalah persisten. Misalnya, bagaimana kamu menyimpan catatan dari semua tweet? Layanan tweet yang tidak mengingat tweet adalah hal yang mengerikan! Ini adalah ketika ide dari database ikut bermain.

Pikirkan suatu tabel database sebagai spreadsheet Excel. Ini dapat memiliki sejumlah field, seperti nama orang, usia, atau alamat surat. Namun, PHP tidak menyediakan penyimpanan semacam ini secara bawaan. Sebagai gantinya, opsi yang paling umum adalah MySQL, yang merupakan basis data open source paling populer di dunia.

Instalasi MySQL tidak termasuk dalam lingkup tutorial ini. Sebagai gantinya, lihatlah tutorial ini pada Nettuts+ untuk penelusuran lengkap.

Berikut ini contoh yang disederhanakan untuk memulai dengan mengambil baris dari tabel database secara aman. Jangan khawatir jika kelihatannya luar biasa. MySQL adalah bahasa baru keduamu untuk dipelajari. PHP PDO API, serta bahasa query itu sendiri, membutuhkan waktu untuk belajar.

Pertama, kamu perlu cara untuk terhubung ke database.

PDO adalah salah satu dari tiga API yang tersedia untuk terhubung ke database MySQL.

Selanjutnya, kita akan menambahkan fungsi helper untuk mengambil semua data dari tabel tweet. Perhatikan argumen metode query, SELECT * FROM tweets. Ini adalah bahasa khusus untuk query database. Dalam kasus ini, kita menggunakan * simbol untuk mereferensikan semua baris. Karena itu, kita memilih semua baris dari tabel, yang disebut tweets.

Fungsi ini mempersiapkan query, dan kemudian mengambil kumpulan hasil.

Sekarang, dengan set tahapan, kita hanya perlu memanggil fungsi-fungsinya.

Cara mudah untuk mengeluarkan isi variabel adalah melalui penggunaan fungsi var_dump. Jika kamu melewatkan output dari fetchTweets($conn) ke fungsi ini, setelah melihatnya di browser, kamu akan melihat sesuatu di sepanjang barisnya:

var_dump sangat membantu untuk debugging, tetapi untuk tujuan produksi, lebih baik untuk menyaring hasilnya, dan merendernya pada halaman dengan benar. Pernyataan foreach, yang kamu sudah terbiasa dengannya, akan menangani pekerjaan tersebut dengan baik!


Kesimpulan

Seperti dengan setiap keterampilan, menulis PHP dengan lancar tidak membutuhkan apa pun selain waktu Anda. Mungkin butuh waktu ratusan jam untuk sepenuhnya mengerti, tapi tidak apa-apa. Ini menyenangkan, bukan? Harus!

Cara terbaik untuk belajar adalah melakukannya. Membuat proyek yang akan dibuang seperti akan keluar dari gaya! Teknik yang diuraikan dalam tutorial ini akan membawamu melalui tahap pertama, tetapi, tentu saja, seiring dengan kemajuan keterampilanmu, kamu akan melanjutkan ke topik yang lebih maju, seperti framework PHP, design pattern, dan test-driven development. Selamat bersenang-senang!

Sumber Daya Premium Tuts+ yang Disarankan

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.