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
, .
:
- , ,
(isPostRequest
, getRequestType
, parseSchemaElement
, renderPageWithSetupsAndTeardowns
) boolean
is
, has
can
camelCase
. camelCase
, .
UPPER_CASE_SNAKE_CASE
. UPPER_CASE_SNAKE_CASE
, .
:
, ,
. Map
($typesMap
, $statesMap
), .. .
, (unpaidProject
)
, , (userIsAdmin
, messageIsSend
, figureCanBePainted
, projectName
)
, ,
:
$object->expire_at
$object->setExpireAt($date);
$object->getExpireAt();
:
$object->expiration_date;
$object->setExpirationDate($date);
$object->getExpirationDate();
boolean
is
, has
can
:
if ($project->isInvalid()) {
}
if ($project->isNotValid()) {
}
if ($accessManager->isAccessDenied()) {
}
:
if (!$project->isValid()) {
}
if (!$accessManager->isAccessAllowed()) {
}
if ($accessManager->canAccess()) {
}
( 8 ), : , ), (userHasRoleAdmin
, statusIsActive
)
(namespace), ( ). (use
).
{...}
. .
.
:
- .
- / â .
.
, .
.
.
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
. . .
. , :
- .
\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) {
}
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.