ناشناس
سوال 2452
psr-1 چه مفهومی دارد؟
ثبت پاسخ جدید
برای ثبت پاسخ، لطفا وارد حساب کاربری خود شوید.
پاسخها
1 پاسخاین بخش از استاندارد شامل موادی است که باید المان های کد نویسی استاندارد در نظر گرفته شود تا از سطح بالای همکاری بین برنامه نویس های PHP اطمینان حاصل شود.
واژه های "حتما باید"، "حتما نباید"، "نیازمند است"،"ترجیحا باید"،"ترجیحا نباید"،"پیشنهاد می شود"، "شاید" و "اختیاری" که در این پاسخ می خوانید طبق استاندارد های توصیف شده در سند
RFC 2119
می باشد.
بررسی اجمالی
فایل ها حتما باید تنها از <?php و <?= استفاده کنند.
فایل ها حتما باید از اینکودینگ UTF-8 without BOM برای فایل های PHP استفاده کنند.
فایل ها ترجیحا باید عناوین را مشخص کنند یا اینکه خروجی داشته باشند ولی ترجیحا نباید هردو را انجام دهند
Namespace ها و Class ها حتما باید از قواعد Autoloading تشریح شده در PSR0 و PSR4 پیروی کنند.
نام کلاس ها حتما باید به صورت StudlyCaps تعریف شوند.
ثابت های کلاس حتما باید به صورت حروف بزرگ تعریف شوند و تنها از _ به عنوان جدا کننده استفاده کنند.
نام متد ها حتما باید به صورت camelCase تعریف شوند.
فایل ها
تگ های PHP : کد های PHP حتما باید از شیوه کامل تگ PHP به صورت <? php?> استفاده کنند. از شیوه کوتاه آن تنها برای نمایش استفاده می شود <? =?> . و حتما نباید از تگ های دیگری استفاده شود.
اینکودینگ کاراکتر ها : کد های PHP حتما باید تنها از UTF8 without BOM استفاده کنند.
عوارض جانبی : یک فایل ترجیحا باید یک نماد جدید (Class, Function, Constants) را تعریف کند و هیچ عوارض دیگری نداشته باشد. یا ترجیحا باید یک منطق را با برخی عوارض اجرا کند . اما ترجیحا نباید هردو را انجام دهد. عبارت "عوارض جانبی" در این جا یعنی اجرای یک منطقی که مرتبط با کلاس تعریف شده، یا تابع تعریف شده نداشته باشد. در زیر یک مثال را می توانید ببینید که هم نمادی را تعریف کرده، و هم یک خروجی داشته است. مثالی که باید از آن اجتناب شود.
<?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
}
در زیر نیز یک مثال را می توانید ببینید که یک تعریف در خود دارد بدون آنکه عوارض جانبی ای داشته باشد.
<?php
// declaration
function foo()
{
// function body
}
// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
Namespace و Class Name : حتما باید از قواعد PSR0 یا PSR4 پیروی کند. این بدان معنی است که هر فایل تنها باید شامل یک کلاس باشد و داخل Namespaceی قرار گیرد حداقل در یک مرحله. نام کلاس حتما باید StudlyCaps باشد . در زیر یک نمونه مثال را می توانید ببینید.
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
ثابت ها، خواص و متد ها : واژه کلاس در این بخش به همه کلاس ها، interface ها و trait ها اشاره می کند. ثابت ها حتما باید به صورت تمام حروف بزرگ تعریف شوند و تنها از زیر خط به عنوان جدا کننده استفاده کند . یک نمونه کد صحیح را در زیر می توانید ببینید
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
اسامی خواص Properties حتما باید به صورت under_score تعریف شود. متد ها نیز حتما باید به صورت camelCase تعریف شوند.
واژه های "حتما باید"، "حتما نباید"، "نیازمند است"،"ترجیحا باید"،"ترجیحا نباید"،"پیشنهاد می شود"، "شاید" و "اختیاری" که در این پاسخ می خوانید طبق استاندارد های توصیف شده در سند
RFC 2119
می باشد.
بررسی اجمالی
فایل ها حتما باید تنها از <?php و <?= استفاده کنند.
فایل ها حتما باید از اینکودینگ UTF-8 without BOM برای فایل های PHP استفاده کنند.
فایل ها ترجیحا باید عناوین را مشخص کنند یا اینکه خروجی داشته باشند ولی ترجیحا نباید هردو را انجام دهند
Namespace ها و Class ها حتما باید از قواعد Autoloading تشریح شده در PSR0 و PSR4 پیروی کنند.
نام کلاس ها حتما باید به صورت StudlyCaps تعریف شوند.
ثابت های کلاس حتما باید به صورت حروف بزرگ تعریف شوند و تنها از _ به عنوان جدا کننده استفاده کنند.
نام متد ها حتما باید به صورت camelCase تعریف شوند.
فایل ها
تگ های PHP : کد های PHP حتما باید از شیوه کامل تگ PHP به صورت <? php?> استفاده کنند. از شیوه کوتاه آن تنها برای نمایش استفاده می شود <? =?> . و حتما نباید از تگ های دیگری استفاده شود.
اینکودینگ کاراکتر ها : کد های PHP حتما باید تنها از UTF8 without BOM استفاده کنند.
عوارض جانبی : یک فایل ترجیحا باید یک نماد جدید (Class, Function, Constants) را تعریف کند و هیچ عوارض دیگری نداشته باشد. یا ترجیحا باید یک منطق را با برخی عوارض اجرا کند . اما ترجیحا نباید هردو را انجام دهد. عبارت "عوارض جانبی" در این جا یعنی اجرای یک منطقی که مرتبط با کلاس تعریف شده، یا تابع تعریف شده نداشته باشد. در زیر یک مثال را می توانید ببینید که هم نمادی را تعریف کرده، و هم یک خروجی داشته است. مثالی که باید از آن اجتناب شود.
<?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
}
در زیر نیز یک مثال را می توانید ببینید که یک تعریف در خود دارد بدون آنکه عوارض جانبی ای داشته باشد.
<?php
// declaration
function foo()
{
// function body
}
// conditional declaration is *not* a side effect
if (! function_exists('bar')) {
function bar()
{
// function body
}
}
Namespace و Class Name : حتما باید از قواعد PSR0 یا PSR4 پیروی کند. این بدان معنی است که هر فایل تنها باید شامل یک کلاس باشد و داخل Namespaceی قرار گیرد حداقل در یک مرحله. نام کلاس حتما باید StudlyCaps باشد . در زیر یک نمونه مثال را می توانید ببینید.
<?php
// PHP 5.3 and later:
namespace Vendor\Model;
class Foo
{
}
ثابت ها، خواص و متد ها : واژه کلاس در این بخش به همه کلاس ها، interface ها و trait ها اشاره می کند. ثابت ها حتما باید به صورت تمام حروف بزرگ تعریف شوند و تنها از زیر خط به عنوان جدا کننده استفاده کند . یک نمونه کد صحیح را در زیر می توانید ببینید
<?php
namespace Vendor\Model;
class Foo
{
const VERSION = '1.0';
const DATE_APPROVED = '2012-06-01';
}
اسامی خواص Properties حتما باید به صورت under_score تعریف شود. متد ها نیز حتما باید به صورت camelCase تعریف شوند.