Panduan Dasar Penulisan Kode PHP yang Baik

Untuk menjadi programer profesional, tentunya diperlukan aturan-aturan dasar penulisan kode PHP yang baik, di artikel ini akan dijelaskan bagaimana cara penulisan kode PHP yang baik. Tentunya tidak ada paksaan untuk menggunakan aturan-aturan penulisan seperti yang akan saya jelaskan tetapi sangat direkomendasikan agar tetap konsisten dalam penulisan kode PHP.

File Format

File harus disimpan dengan pengkodean Unicode (UTF-8). BOM tidak boleh digunakan. Tidak seperti UTF-16 dan UTF-32, tidak ada perintah byte untuk menunjukkan dalam file yang dikodekan UTF-8, dan BOM dapat memiliki efek samping negatif dalam pemrosesan PHP, efeknya aplikasi dapat mengatur header sendiri.

Tag Penutup PHP

Tag penutup PHP pada dokumen PHP ?> adalah opsional untuk parser PHP. Namun, jika digunakan, spasi kosong apa pun yang mengikuti tag penutup, baik yang diperkenalkan oleh developer, pengguna, atau aplikasi FTP, dapat menyebabkan output yang tidak diinginkan, kesalahan PHP, atau halaman kosong. Untuk alasan ini, semua file PHP HARUS MENGHILANGKAN tag penutup PHP dan diakhiri dengan satu baris kosong sebagai gantinya.

Penamaan File

Penamaan File Class PHP harus dinamai diawali oleh huruf kapital terlebih dahulu (UCFirst), sementara nama file lainnya (Config, Views, Skrips, dll.) harus dalam huruf kecil.

SALAH


somelibrary.php
someLibrary.php
SOMELIBRARY.php
Some_Library.php

Application_config.php
Application_Config.php
applicationConfig.php

BENAR

Somelibrary.php
Some_library.php

applicationconfig.php
application_config.php

Selain itu, nama file Class harus sesuai dengan nama Class itu sendiri. Misalnya, jika Anda memiliki Class bernama Myclass, maka nama filenya harus Myclass.php.

Penamaan Class dan Method

Nama Class harus selalu dimulai dengan huruf besar. Beberapa kata harus dipisahkan dengan garis bawah, dan bukan CamelCased.

SALAH


class superclass
class SuperClass

BENAR


class Super_class

class Super_class {

        public function __construct()
        {

        }
}

Nama Method di Class harus sepenuhnya lebih kecil dan dinamai untuk menunjukkan fungsinya dengan jelas, sebaiknya menyertakan kata kerja. Cobalah untuk menghindari nama yang terlalu panjang dan verbose. Beberapa kata harus dipisahkan dengan garis bawah.

SALAH


function fileproperties()               // tidak deskriptif dan membutuhkan pemisah garis bawah
function fileProperties()               // tidak deskriptif dan menggunakan CamelCase
function getfileproperties()            // Lebih baik!  Tapi masih hilang pemisah garis bawah
function getFileProperties()            // Menggunakan CamelCase
function get_the_file_properties_from_the_file()        // harus disederhanakan 

BENAR


function get_file_properties()  // deskriptif, pemisah garis bawah, dan semua huruf kecil

Nama Variabel

Pedoman penamaan variabel sangat mirip dengan yang digunakan untuk metode Class. Variabel hanya boleh berisi huruf kecil, menggunakan pemisah garis bawah, dan diberi nama yang wajar untuk menunjukkan tujuan dan kontennya. Variabel non-kata yang sangat pendek hanya boleh digunakan sebagai iterator dalam loop for().

SALAH


$j = 'foo';             // single letter variables should only be used in for() loops
$Str                    // contains uppercase letters
$bufferedText           // uses CamelCasing, and could be shortened without losing semantic meaning
$groupid                // multiple words, needs underscore separator
$name_of_last_city_used // too long

BENAR


for ($j = 0; $j < 10; $j++)
$str
$buffer
$group_id
$last_city

Komentar

Secara umum, kode harus dikomentari secara produktif. Ini tidak hanya membantu menggambarkan flow dan maksud kode untuk programmer yang kurang berpengalaman. Tidak ada format yang diperlukan untuk komentar, tetapi berikut ini direkomendasikan.


/**
 * Super Class
 *
 * @package     Package Name
 * @subpackage  Subpackage
 * @category    Category
 * @author      Author Name
 * @link        http://example.com
 */
class Super_class {

/**
 * Encodes string for use in XML
 *
 * @param       string  $str    Input string
 * @return      string
 */
function xml_encode($str)

/**
 * Data for class manipulation
 *
 * @var array
 */
public $data = array();

// break up the string by newlines
$parts = explode("\n", $str);

// A longer comment that needs to give greater detail on what is
// occurring and why can use multiple single-line comments.  Try to
// keep the width reasonable, around 70 characters is the easiest to
// read.  Don't hesitate to link to permanent external resources
// that may provide greater detail:
//
// http://example.com/information_about_something/in_particular/

$parts = $this->foo($parts);

Konstanta

Konstanta (Constant) mengikuti pedoman/aturan yang sama seperti variabel, kecuali konstanta harus selalu sepenuhnya huruf besar. Selalu gunakan konstanta CodeIgniter jika sesuai, yaitu SLASH, LD, RD, PATH_CACHE, dl

SALAH


myConstant      // missing underscore separator and not fully uppercase
N               // no single-letter constants
S_C_VER         // not descriptive
$str = str_replace('{foo}', 'bar', $str);       // should use LD and RD constants

BENAR


MY_CONSTANT
NEWLINE
SUPER_CLASS_VERSION
$str = str_replace(LD.'foo'.RD, 'bar', $str);

TRUE, FALSE, and NULL

TRUE, FALSE, dan NULL harus selalu memakai huruf kapital.

SALAH

if ($foo == true)
$bar = false;
function foo($bar = null)

BENAR

if ($foo == TRUE)
$bar = FALSE;
function foo($bar = NULL)

Operator Logika

Penggunaan operator perbandingan || "OR" tidak disarankan. karena kejelasannya pada beberapa perangkat output rendah (terlihat seperti angka 11, misalnya)

SALAH

if ($foo || $bar)
if ($foo AND $bar)  // okay but not recommended for common syntax highlighting applications
if (!$foo)
if (! is_array($foo))

BENAR

if ($foo OR $bar)
if ($foo && $bar) // recommended
if ( ! $foo)
if ( ! is_array($foo))

Sumber: Codeigniter.com