یسری نکات تو کد نویسی تو هر زبانی هستن که رعایت کردنشون میتونه شما رو خیلی حرفه ای تر نشون بده و رعایت نکردنشون زیاد جالب نیست برای یک برنامه نویس که ادعای خفن بودن میکنه 🙂
تو زبان PHP یسری استاندار تعریف شده که امروزه همه برنامه نویسای خوب PHP رعایتش میکنن، این میتونه برای همه خوب باشه… هم کسی که کد مینویسه و هم کسی که کد میخونه.
استانداردی که تو این پست میخام بصورت خلاصه در موردش حرف بزنم PSR-1 هست که اشاره میکنه استاندارد های پایه ی کد نویسی در PHP.
تو PHP چند روش برای باز کردن کد PHP و بستن اون وجود داره ولی این استاندارد میگه که از این روش استفاده کنید :<?php ?> یا از نوع کوتاهش به این صورت : <? =?>
کاراکتر انکودینگی که استفاده میشه باید UTF-8 باشه و بدون BOM .
نکته ی دیگه ای که خیلی مهمه اینه که اجرای منطق برنامه با include و تعریف کردن تابع و… یک جا نباشن، یعنی مثلا شما اگه دارید یه فانکش تعریف میکنید بالاش مثلا echo نکنید. این مثالی که در زیر اومده یه نمونه غلط طبق این استاندارد هست :
<?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 بخوبی رعایت شده :
<?php // declaration function foo() { // function body } // conditional declaration is *not* a side effect if (! function_exists('bar')) { function bar() { // function body } }
namespace ها و نام کلاس ها
هر کلاس باید توی یه فایل نوشته بشه و مثلا وسط کد کلاس تعریف نکنید و یا مثلا دو تا کلاس رو توی یه فایل ننویسید. اسم کلاس ها باید بصورت StudlyCaps باشه که مشخصه ینی چجوری…
برای ورژن ۵٫۳ به بعد از روش رسمی فضای نام ها استفاده کنید، برای مثال :
<?php // PHP 5.3 and later: namespace Vendor\Model; class Foo { }
ولی برای ورژن های قبل که از این قابلیت پشتیبانی نمیکنن از pseudo-namespacing استفاده کنید که یه پیشوند Vendor_ به اسم کلاسها اضافه میشه و sub namespace ها بعد از اون نوشته میشن و در نهایت نام کلاس نوشته میشه :
<?php // PHP 5.2.x and earlier: class Vendor_Model_Foo { }
ثابت ها در کلاس ها
ثابت ها در کلاسها طبق این استاندارد باید با حروف بزرگ تعریف بشن و برای جدا کردن از underscore استفاده کنید. یچیزی مثل کد زیر :
<?php namespace Vendor\Model; class Foo { const VERSION = '1.0'; const DATE_APPROVED = '2012-06-01'; }
در مورد پراپرتی ها در کلاس ها دستور خاصی گفته نشده ولی کلاس ها باید بصورت camelCase() تعریف بشن.
همین روزا بقیه استاندارا رم میتویسم واستون که بخونیم و رعایت کنیم. مرسی 🙂
سلام وقتتون بخیر
بی زحمت بقیه psr ها رو هم بذارید
یه مقدار مخصوصا برای افراد مبتدی سخته فهمیدنشون از روی خود سایت php
متشکرم