PSR-1 : استاندارد پایه کدنویسی
پس از آشنایی با اولین استاندارد PSR، یعنی استاندارد PSR-0 به بررسی دومین استاندارد، یعنی PSR-1 میرویم. تمرکز این استاندارد بر روی نحوه کد نویسی با زبان PHP است.
مرورکلی
-
- فایل ها فقط باید از شکل خلاصه یا نوع طولانی تگ های PHP برای شروع انتخاب کنند.
- کدگذاری کاراکتر فایل باید UTF-8 بدون BOM باشد.
- درون یک فایل PHP نباید کارهای جانبی با کارهای اصلی با هم وجود داشته باشند.
- فضاهای نام و کلاس ها باید استاندارد PSR-0: Autoloading Standard را دنبال کنند.
- نام کلاس ها باید بصورت StudlyCaps اعلام شود.
- ثابت های کلاس باید در تمام موارد به صورت upper case و با جداکننده underscore مشخص شوند.
- نام متد باید بصورت camelCase اعلام شود.
فایل ها
۱- تگ های php
برای استفاده از تگ باز و بسته شدن PHP یا باید از نوع طولانی آن یعنی یا از نوع کوتاه آن یعنی استفاده کرد و نباید از روشهای دیگر استفاده شود.
۲- کدگذاری کاراکتر (Character Encoding)
کدگذاری کاراکتر فایل باید UTF-8 بدون BOM باشد.
۳- کارهای جانبی (Side Effects)
درون یک فایل PHP نباید کارهای جانبی با کارهای اصلی با هم وجود داشته باشند، بلکه باید در فایلهای جداگانه قرار بگیرند.
کارهای جداگانه میتواند شامل استفاده از require یا include، اتصال به سرویس خارجی، تغییر تنظیمات ini، مدیریت خطاها، تغییر متغیرهای استاتیک یا سراسری، نوشتن یا خواندن از فایل و کارهایی مشابه آن.
اما کارهای اصلی میتواند شامل کلاس ها، توابع، ثابت ها و دستورات دیگر باشند.
برای مثال کد زیر در استاندارد PSR-1 قابل قبول نیست:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?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 } |
اما کدهای زیر طبق استاندارد PSR-1 است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // declaration function foo() { // function body } // conditional declaration is *not* a side effect if (! function_exists('bar')) { function bar() { // function body } } |
نام کلاسها و فضای نام (namespace)
نام کلاسها و فضای نام باید مطابق استاندارد PSR-0 یا PSR-4 باشند. به این معنی که هر کلاس باید درون یک فایل جداگانه قرار بگیرد و هر کلاس باید دارای یک namespace سطح بالا باشد. همینطور نام کلاسها باید به صورت StudlyCaps باشد، به این معنی که کلمات به هم چسبیده و حروف اول تمام کلمات بزرگ باشد.
اما از آنجا که namespaceها از PHP 5.3 به بعد پشتیبانی میشوند، در PHP 5.3 به بالا میتوانید از مثال زیر استفاده کنید:
1 2 3 4 5 6 7 |
<?php // PHP 5.3 and later: namespace Vendor\Model; class Foo { } |
اما از PHP 5.3 به پایین باید به صورت زیر عمل کنید:
1 2 3 4 5 |
<?php // PHP 5.2.x and earlier: class Vendor_Model_Foo { } |
ثابتها، خواص و متدهای کلاس
ثابتها (Constants)
تمام حروف ثابتها باید به صورت حروف بزرگ نوشته شوند و کلمات با استفاده از _ (underscore) از یکدیگر جدا شوند.
1 2 3 4 5 6 7 8 |
<?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; } |
ویژگی ها (Properties)
استاندارد PSR-1 هیچ توضیحی در مورد انتخاب نام ویژگی ها ارائه نداده است. اما هر کدام از روش های نامگذاری($StudlyCaps ، $camelCase ، $under_score) که استفاده می شود باید به طور مداوم در یک دامنه اجرا شود. این دامنه ممکن است در سطح کلاس یا سطح متد باشد.
متدها (Methods)
نام تمام متدها باید به صورت camelCase باشد.