اصطلاحات PHP Code Style

تتناول هذه المقالة نهجًا لكتابة كود PHP وكتابته. تم تشكيل النقاط التالية من خلال تحليل مناهج الشركة الحالية والخبرة الشخصية.


قواعد تسمية الملفات والمجلدات


يجب أن تكون جميع أسماء المجلدات والملفات ذات معنى وتتحدث (لا تتطلب شرحًا إضافيًا).


المجلدات


تتم تسمية جميع المجلدات بأحرف صغيرة مع فصل الكلمات باستخدام -علامة الطرح.


إذا كان المجلد يحتوي على فئات متعلقة بمساحة الاسم (مساحة الاسم) ، فسيتم تسمية المجلد وفقًا لمساحة الاسم (مساحة الاسم).


الأحرف المسموح بها لتسمية المجلدات: أحرف لاتينية -وعلامة ناقص.


الملفات


يتم تسمية جميع الملفات المتعلقة بالمشروع بالأحرف الصغيرة مع فصل الكلمات باستخدام الرمز -(ناقص).


إذا كان الملف عبارة عن ملف فئة ، فسيتم تسميته وفقًا لاسم الفئة.


اصطلاحات التسمية لمساحات الأسماء والفئات والأساليب والمتغيرات


يجب أن تكون جميع الأسماء ذات معنى ومحدثة (لا تتطلب شرحًا إضافيًا).


مساحات الأسماء


. , .



PascalCase. PascalCase .


Trait. Interface. Abstract.



camelCase. camelCase , .


:


  1. , ,
    (isPostRequest, getRequestType, parseSchemaElement, renderPageWithSetupsAndTeardowns)
  2. boolean is, has can


camelCase. camelCase , .


UPPER_CASE_SNAKE_CASE. UPPER_CASE_SNAKE_CASE , .


:



  1. , ,



  2. . Map ($typesMap, $statesMap), .. .


  3. , (unpaidProject)


  4. , , (userIsAdmin, messageIsSend, figureCanBePainted, projectName)


  5. , ,


    :


    $object->expire_at
    $object->setExpireAt($date);
    $object->getExpireAt();

    :


    $object->expiration_date;
    $object->setExpirationDate($date);
    $object->getExpirationDate();

  6. boolean is, has can



  7. :


    if ($project->isInvalid()) {
        // ...
    }
    if ($project->isNotValid()) {
        // ...
    }
    if ($accessManager->isAccessDenied()) {
        // ...
    }

    :


    if (!$project->isValid()) {
        // ...
    }
    if (!$accessManager->isAccessAllowed()) {
        // ...
    }
    if ($accessManager->canAccess()) {
        // ...
    }

  8. ( 8 ), : , ), (userHasRoleAdmin, statusIsActive)




(namespace), ( ). (use).
{...}. .


.


:


  1. .
  2. / — .

.


, .


.


.


class InterfaceType {

    private $property = 'myProp';

    public function getProperty():string {
        return $this->property;
    }    
}

(return) , .


, () .


:


 if (IS_REGISTRATOR() && (($params.status === 'W' || $params.status === 'D' || $params.status === 'A') && $params.remark && (($params.subres_level == 0 && ($user_info->selected_title->tid == $params.boss || $user_info->selected_title->tid == $doc_signer_tid || !$params.usertid) || $params.subres_level > 0 && $user_info->selected_title->tid == $params.usertid))) { ... }

:


$docIsInWorkAcceptOrDraft = ...;
$bossHasSignerPriviledge = ...;
$userCanSign = ...;

if ($docIsInWorkAcceptOrDraft && $bossHasSignerPriviledge && $userCanSign) {
  // ...
}


( ""). , , .


, PHPDoc. - .


//, /*...*/.


, , .



, , declare(strict_types=1);


/ null. 0 .


function sendEmail(string $title, string $message = null, string $date = null): void {
    // ...
}

//    
$object->sendEmail('Title', null, '2017-01-01');

//    
$object->sendEmail('Title', '', '2017-01-01');

, ( — ).


. array_key_exists, isset. . .


. , :


  1. . \n, \r, \t ..


, (: type). PHPDoc. , c check validate, .


private. , protected. , public.


null, Null object, , (: ).


jsonreturn true, return ['success' => ['message' => '.....']] ['error' => ['message' => '.....']]. message , .


.


. . , .


boolean . boolean (===), .


:


if ($user) {
    // ...
}
if ($request->postData('amount') == 100) {
    // ...
}
if (!$request->postData('amount')) {
    // ...
}

:


if ($user === null) { // $user   object
    // ...
}
if ((int)$request->postData('amount') === 100) {
    // ...
}
if ($booking->comment === '') {
    // ...
} 

عند استخدام عوامل التشغيل AND و OR في نفس الوقت في تعبير شرطي ، من الضروري إعطاء الأولوية للأقواس.

Source: https://habr.com/ru/post/undefined/


All Articles