Category Archives: PHP

PSR 1 – Basic Coding Standard

http://www.php-fig.org/psr/psr-1/

Rekomendasi ini disarankan agar tingkat interopability antar kode tetap tinggi.

Perhatikan keyword ‘harus’, ‘tidak boleh’, ‘seharusnya’, ‘disarankan’, ‘dibolehkan’, ‘mungkin’.

1. Overview

  • File harus menggunakan hanya tag <?php dan <?=.
  • File PHP harus hanya menggunakan UTF-8 tanpa BOM.
  • File seharusnya deklarasi simbol (class, functions, constants) saja atau menghasilkan efek samping (menghasilkan output, merubah setting .ini) saja tapi tidak boleh keduanya.
  • Namespace harus mengikuti aturan “autoloading” PSR0 atau PSR4.
  • Nama class harus di deklarasikan dalam StudlyCaps.
  • Konstanta dalam class harus dideklarasikan dengan kapital semua dan underscore untuk separator.
  • Nama method harus di deklarasikan dalam camelCase.

2. Files

2.1 PHP Tags

File PHP harus menggunakan tag <?php ?> atau tag short-echo <?= ?>, tidak boleh menggunakan variasi tag lain

2.2 Character Encoding

File PHP harus hanya menggunakan UTF-8 tanpa BOM.

2.3 Side Effects

Kata “side effects” berarti eksekusi logic yang tidak berhubungan dengan deklarasi class, function, constants dll.

Side effects termasuk tapi tidak terbatas pada: menghasilkan output (contoh: echo), penggunaan require atau include, koneksi ke service eksternal, menghubah setting .ini, menampilkan error atau exception, mengubah variabel global atau static, membaca atau menulis ke file, dan sebagainya.

Berikut adalah contoh file PHP dengan deklarasi dan side effect (contoh yang harus dihindari).

<?php 
//side effect: change ini settings
ini_set('error_reporting', E_ALL);

//side effect: loads a file
include "file.php";

//side effect: generates output
echo "<html>\n";

//declaration
function foo()
{
   // function body
}

Berikut adalah contoh file yang hanya mengandung deklarasi tanpa side effect (contoh yang direkomendasikan).

<?php
//declaration
function foo()
{
    function body
}

//conditional declaration is *not* a side effect
if (! function_exists('bar')) {
    function bar()
    {
        function body
    }
}

3. Namespace and Class Names

Namespace dan nama class harus mengikuti “autoloading” PSR0 atau PSR4.

Ini artinya setiap file mengandung satu class (dirinya sendiri), dan didalam namespace yang setidaknya 1 level: top level vendor name.

Nama class harus dideklarasikan dalam StudlyCaps.

Kode yang ditulis untuk PHP versi 5.3 dan selanjutnya harus menggunakan namespace formal.
Contoh

<?php
//PHP 5.3 and later:
namespace Vendor\Model;

class Foo
{
}

Kode yang ditulis untuk PHP versi 5.2.x dan sebelumnya harus menggunakan aturan pseudo-namespacing dengan menambahkan Vendor_ di nama class.

<?php
//PHP 5.2.x and earlier:
class Vendor_Model_Foo
{
}

4. Class Constants, Properties, and Methods

Term “class” merefer ke semua class, interfaces, dan traits.

4.1 Constants

Konstanta harus di deklarasikan dengan huruf kapital semua dengan underscore sebagai separator. Contoh:

<?php
namespace Vendor\Model;

class Foo
{
    const VERSION = '1.0';
    const DATE_APPROVED = '2012-06-01';
}

4.2 Properties

Guide ini tidak menyarankan salah satu dari $StudlyCaps, $camelCase, atau $under_score untuk nama properties.

Apapun aturan yang digunakan, harus digunakan secara konsisten dalam suatu scope. Scope tersebut bisa vendor level, package level, class level, atau method level.

4.3 Methods

Nama method harus dideklarasikan dalam camelCase().

Credit to: Yusuf Irwandi