PHP-Code-Stil-Konventionen

Dieser Artikel beschreibt einen Ansatz zum Schreiben und Schreiben von PHP-Code. Die folgenden Punkte wurden durch Analyse bestehender UnternehmensansÀtze und persönlicher Erfahrungen gebildet.


Regeln zum Benennen von Dateien und Ordnern


Alle Namen fĂŒr Ordner und Dateien sollten aussagekrĂ€ftig und sprechend sein (ohne zusĂ€tzliche ErklĂ€rung).


Ordner


Alle Ordner werden in Kleinbuchstaben mit Worttrennung unter Verwendung des -Minuszeichens benannt.


Wenn der Ordner Klassen enthÀlt, die zum Namespace (Namespace) gehören, wird der Ordner nach dem Namespace-Namespace (Namespace) benannt.


ZulÀssige Zeichen zum Benennen von Ordnern: lateinische Buchstaben und ein -Minuszeichen.


Dateien


Alle projektbezogenen Dateien werden in Kleinbuchstaben mit Worttrennung durch das Symbol -(Minus) benannt.


Wenn es sich bei der Datei um eine Klassendatei handelt, wird sie entsprechend dem Klassennamen benannt.


Namenskonventionen fĂŒr Namespaces, Klassen, Methoden und Variablen


Alle Namen sollten aussagekrÀftig und sprechend sein (ohne zusÀtzliche ErklÀrung).


Namespaces


. , .



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, , (: ).


json — return 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 === '') {
    // ...
} 

Wenn Sie die Operatoren AND und OR gleichzeitig in einem bedingten Ausdruck verwenden, mĂŒssen Sie den Klammern PrioritĂ€t einrĂ€umen.

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


All Articles