Skip to content

Instantly share code, notes, and snippets.

@xemoe
Last active August 29, 2015 14:23
Show Gist options
  • Save xemoe/0707f06080b09f7c5eaf to your computer and use it in GitHub Desktop.
Save xemoe/0707f06080b09f7c5eaf to your computer and use it in GitHub Desktop.
PSR 2.4
  1. Classes, Properties, and Methods

ในข้อกำหนด คลาส หมายรวมถึงคำสำคัญ class, interface และ traits

4.1. การสืบทอด (Extends) และการนำไปใช้ (Implements)

การประกาศใช้ extends และ implements ต้องอยู่ในบรรทัดเดียวกับชื่อคลาส

การเปิดปีกกาของคลาสต้องวางในบรรทัดต่อจากการประกาศชื่อคลาสและปิดปีกกาในบรรทัดต่อจากโค้ดภายในคลาสนั้น

<?php
namespace Vendor\Package;

use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

class ClassName extends ParentClass implements \ArrayAccess, \Countable
{
    // constants, properties, methods
}

ในการประกาศใช้ implements ทีละหลายรายการ สามาถแบ่งออกเป็นหลายบรรทัด โดนในแต่ละรายการให้มีการจัดย่อหน้า (indent) เพียงหนึ่งครั้ง โดยให้รายการแรกอยู่ในบรรทัดถัดไป จากการประกาศ implements และจะต้องมีเพียงหนึ่ง interface ต่อบรรทัด

<?php
namespace Vendor\Package;

use FooClass;
use BarClass as Bar;
use OtherVendor\OtherPackage\BazClass;

class ClassName extends ParentClass implements
    \ArrayAccess,
    \Countable,
    \Serializable
{
    // constants, properties, methods
}

4.2. ตัวแปร (Properties)

ทุกตัวแปรภายในคลาสต้องมีการประกาศค่าการมองเห็นตัวแปร (public, protected, private) คำสำคัญ var ต้องไม่ถูกใช้ในการสร้างตัวแปร

ต้องไม่มีการประกาศตัวแปรมากกว่าหนึ่งตัวแปรในหนึ่งคำสั่ง ชื่อตัวแปรจะต้องไม่มีคำนำหน้าตามด้วยขีดล่างเพื่อบอกค่าการมองเห็น

การประกาศตัวแปรมีลักษณะดังตัวอย่าง

<?php
namespace Vendor\Package;

class ClassName
{
    public $foo = null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment