استانداردهای کدنویسی PHP در وردپرس (1)

02 اردیبهشت 1399
wordpress-theme-design-standards-09

هدف از این دوره آموزشی

همانطور که قبلا گفتیم، یکی از مشکلات عرضه ی محصولاتی مثل افزونه و قالب وردپرسی در مارکت های داخلی و خارجی، رد شدن آن ها بخاطر رعایت نکردن استانداردهای مورد نظر کمپانی های مربوطه است. استانداردهایی بسیار ساده و کوتاه که اگر آن ها را بدانید، دیگر ماه ها وقت گرانبهایتان را برای انتظار در صف تایید محصول نخواهید گذاشت. مارکت های معروفی مثل انواتو (کدکنیون و تم‌فارست) به رعایت استانداردهای کد نویسی و خوانایی کد‌ها بسیار حساس اند.

در این دوره آموزشی به بررسی استانداردهای مذکور خواهیم پرداخت و در طول دوره توصیه هایی نیز در راه توسعه ی محصولات وردپرسی (مخصوصا قالب ها) برای شما خواهیم داشت.

مقدمه ی درس

خب! به قسمت نهم از «دوره تخصصی استانداردهای طراحی قالب وردپرس» رسیدیم. در این درس به آخرین استانداردهای مورد تایید وردپرس، برای زبان برنامه نویسی پی اچ پی (PHP) خواهیم پرداخت. این استانداردها توسط کمپانی وردپرس اعلام شده اند و رسما تحت عنوان استانداردها، در سایت وردپرس قرار گرفته اند.

استانداردهای کدنویسی PHP در وردپرس

برخی از قسمت های زبان پی اچ پی هنگام استفاده در برنامه های وردپرسی، ایجاد تنقاض کرده و کد را نامنظم می کنند. برای این که در هنگام استفاده از PHP در قالب های وردپرسی، کدی خواناتر و منظم تر داشته باشید، به مواردی که در ادامه خواهیم گفت پایبند باشید.

دابل کوتیشن و تک کوتیشن

از دابل کوتیشن ( " ) و تک کوتیشن ( ' ) در مواقع مناسب به خودشان استفاده کنید. مثلا زمانی که چیزی را در رشته (string) ارزیابی نمی کنید، از تک کوتیشن استفاده نمایید. می توان گفت هرگز نباید گذاشتن رشته ها درون کوتیشن ها را فراموش کنید.

echo '<a href="/static/link" title="Yeah yeah!">Link name</a>';
echo "<a href='$link' title='$linktitle'>$linkname</a>";

فرورفتگی (indentation)

فرورفتگی های مورد استفاده در کد، همواره باید نشان دهنده ی یک ساختار منطقی باشند. برای ایجاد فرو رفتگی در کدها، حتما از کلید tab استفاده کنید نه کلید space.

استثناء: اگر یک بلوک کد داشتید و می خواستید که کمی آن را خوانا تر کنید، آنگاه می توانید از «فاصله» یا space استفاده کنید.

[tab]$foo   = 'somevalue';
[tab]$foo2  = 'somevalue2';
[tab]$foo34 = 'somevalue3';
[tab]$foo5  = 'somevalue4';

برای آرایه های چند گانه یا انجمنی که آیتم های زیادی دارند، هر ایتم باید در یک خط جداگانه قرار بگیرد.

$query = new WP_Query( array( 'ID' => 123 ) );
$query = new WP_Query( array( 
[tab]'post_type'   => 'page',
[tab]'post_author' => 123,
[tab]'post_status' => 'publish',
) );

به آخرین «کاما» ی بعد از آخرین آیتم دقت کنید. گذاشتن این کاما کد را مرتب تر می کند. همچنین زمانی که بخواهید آیتم جدیدی را به آرایه اضافه کنید، خیالتان از بابت فراموش نشدن کاما راحت خواهد بود.

$my_array = array(
[tab]'foo'   => 'somevalue',
[tab]'foo2'  => 'somevalue2',
[tab]'foo3'  => 'somevalue3',
[tab]'foo34' => 'somevalue3',
);

برای دستور swich و case های درون آن نیز ساختار و نحوه ی استفاده از کلید tab به شکل زیر است. (نیاز به یادآوری نیست که زدن کلید tab باعث فرورفتگی یا فاصله ی کد از ابتدای خط می شود)

switch ( $type ) {
[tab]case 'foo':
[tab][tab]some_function();
[tab][tab]break;
[tab]case 'bar':
[tab][tab]some_function();
[tab][tab]break;
}

توجه: کلید tab را فقط می توان در ابتدای خط استفاده کرد. در بین حروف و در وسط خط فقط می توان از space استفاده نمود.

بریس ها

بریس ها (علائمی مثل پرانتزها و غیره) باید مثل نمونه کد زیر، برای بلوک ها مورد استفاده قرار بگیرند:

if ( condition ) {
    action1();
    action2();
} elseif ( condition2 &amp;&amp; condition3 ) {
    action3();
    action4();
} else {
    defaultaction();
}

اگر یک بلوک کد خیلی طولانی داشتید، ابتدا ببینید که آیا می توان آن را به تکه های کوچک تری تبدیل کرد؟ مثلا آیا می توان آن را به چند فانکشن یا متد یا بلوک مجزا تقسیم کرد و بدین وسیله باعث کاهش پیچیدگی در آن کد شد. اگر چنین کاری ممکن بود، حتما آن را انجام دهید و از نوشتن بلوک های کد پیچیده جدا خودداری کنید.

بریس ها همیشه مورد استفاده قرار می گیرند، حتی زمانی که هیچ چیز درون آن ها نباشد.

if ( condition ) {
    action0();
}
 
if ( condition ) {
    action1();
} elseif ( condition2 ) {
    action2a();
    action2b();
}
 
foreach ( $items as $item ) {
    process_item( $item );
}

به خاطر داشته باشید که برای ساده کردن کد، انتخاب های بسیار زیادی دارید. مخصوصا زمانی که کد های html و PHP را با هم مخلوط کرده اید. سعی کنید که با استفاده از چیزهایی مثل if/endif/while/endwhile و غیره ساختار کد خود را بهتر کنید.

نکته: elseif (بدون فاصله) درست است، نه else if (با فاصله)

عبارات با قاعده

Perl compatible regular expressions یا PCRE که به عنوان فانکشن _preg شناخته می شود باید در اولویت با همتایان POSIX استفاده شود. هرگز از سوییچ e/ استفاده نکنید، به جای آن از preg_replace_callback استفاده نمایید.

راحت ترین کار این است که برای عبارات با قاعده (regular expressions)، از رشته هایی با تک کوتیشن (single-quoted strings) استفاده کنید نه از رشته های دابل کوتیشنی (double-quoted strings) . رشته های دابل کوتیشنی فقط دو تا metasequence دارند که \' و \\ هستند.

باز و بسته کردن تگ های پی اچ پی

زمانی که یک قطعه کد PHP را درون یک بلوک html قرار می دهید، تگ های باز و بسته ی PHP باید به تنهایی در یک خط باشند.

کدنویسی چندخطی صحیح:

function foo() {
    ?>
 
<div>
         
        </div>
 
<pre><code>&lt;?PHP
</code></pre>
 
}

کد نویسی تک‌خطی صحیح:

&lt;input name=&quot;" />

کد نویسی نادرست:

if ( $a === $b ) { ?>
 
&lt;?PHP }

توجه: هرگز از تگ‌های ابتدایی PHP که به صورت خلاصه نویسی هستند، استفاده نکنید. همیشه تگ های کامل PHP استفاده نمایید.

فضای خالی موجود در انتهای هر خط کد را حذف نمایید. بستن تگ PHP در پایان فایل ها هم مهم است.

استفاده از فاصله (space)

همیشه بعد از کاما یک اسپیس بزنید. در هردو طرف عملگرهای منطقی، مقایسه ای و رشته ای هم یک اسپیس بزنید.

x == 23
foo &amp;&amp; bar
! foo
array( 1, 2, 3 )
$baz . '-5'
$term .= 'X'

در هر دو طرف پرانتزهای موجود در بلوک های if/elseif/foreach/for و switch نیز یک اسپیس بزنید.

foreach ( $foo as $bar ) { ...

وقتی یک فانکشن را تعریف می کنید هم مثل کد زیر عمل کنید:

function my_function( $param1 = 'foo', $param2 = 'bar' ) { ...
 
function my_other_function() { ...

وقتی یک فانکشن را فراخوانی می کنید، مثل کد زیر عمل نمایید:

my_function( $param1, func_param( $param2 ) );
my_other_function();

هنگام انجام مقایسه ی منطقی به شکل زیر عمل کنید:

if ( ! $foo ) { ...

هنگامی که در پی اچ پی، تایپ کستینگ یا type casting انجام می دهید، مثل کد زیر آن را انجام دهید:

foreach ( (array) $foo as $bar ) { ...
 
$foo = (boolean) $bar;

اگر یکی از آیتم های آرایه را فراخوانی می کنید، فقط زمانی که ایندکس آن متغیر بود، باید در هر دو طرف آن متغیر اسپیس بزنید.

$x = $foo['bar']; // correct
$x = $foo[ 'bar' ]; // incorrect
 
$x = $foo[0]; // correct
$x = $foo[ 0 ]; // incorrect
 
$x = $foo[ $bar ]; // correct
$x = $foo[$bar]; // incorrect

در بلوک های switch ، قبل از دونقطه ی ( : ) مربوط به case ها، هیچ فاصله ای وجود ندارد.

switch ( $foo ) {
    case 'bar': // correct
    case 'ba' : // incorrect
}

همچنین قبل از دونقطه ی موجود در فانکشن ها به شکل زیر، هیچ فاصله ای قرار داده نمی شود:

function sum( $a, $b ): float {
    return $a + $b;
}

فقط در موار خاصی، پرانتز ها در داخل خود فاصله هایی دارند. مثل کد زیر:

if ( $foo &amp;&amp; ( $bar || $baz ) ) { ...
 
my_function( ( $x - 1 ) * 5, $y );

خب! همراهان گرامی برای این جلسه کافی است. به پایان قسمت نهم و اولین جلسه ی بررسی استانداردهای کدنویسی PHP در وردپرس رسیدیم. در قسمت بعدی ادامه ی استانداردهای مربوط به PHP را می گوییم و سپس به ادامه ی دوره آموزشی خواهیم پرداخت. با ما همراه باشید.


منبع: سایت Wordpress

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش تخصصی استانداردهای طراحی قالب وردپرس توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.