Aby zachować porządek w kodeksie, ważne jest ustalenie jasnych zasad tworzenia nazw. Ta strona służy jako przegląd stosunkowo popularnych podejść stosowanych przez dużą liczbę programistów, w tym przeze mnie i osoby, z którymi współpracuję.
Jeśli pracujesz w zespole programistów, korzystaj z ich zasad, ale dla ogólnego rozwoju równie korzystne jest wyrobienie sobie kilku dobrych nawyków.
Ponieważ pojęcie całej składni PHP jest bardzo szerokie, podzieliłem ten przewodnik na wiele kategorii, które są wysoce wyspecjalizowane.
Jeśli szukasz szybkiego rozwiązania, polecam zapoznanie się z standardem PSR-4.
Każdy skrypt musi zaczynać się od znacznika <?php
.
Jeśli na końcu pliku nie ma żadnego HTML, nie należy go kończyć (aby zapobiec pojawieniu się białego znaku na końcu strony).
Wczytywanie innych plików powinno odbywać się zgodnie z następującymi zasadami:
include 'file.php';
require 'file.php';
Jeśli jest to choć trochę możliwe, powinniśmy oddzielić logikę pobierania danych od renderowania do HTML, czyli zastosować model MVC (model - widok - kontroler).
Najpierw więc przygotowujemy dane w programie, na przykład, Presenter:
Presenter.php
.
$cisla = [1, 2, 3];$data = [];$data['numery'] = $cisla; // przekaż dane do szablonuinclude 'renderCisel.php'; // wczytaj szablon
A następnie narysuj go w szablonie:
renderCisel.php
.
<table><?phpforeach ($data['cisla'] as $cislo) {echo '<tr><td>' . $cislo . '</td></tr>';}?></table>
Takie podejście jest stosowane przez większość frameworków i jest przydatne dla zwiększenia przejrzystości kodu. W dalszej części procesu tworzenia aplikacji podejście to powinien stosować każdy doświadczony programista, który chce tworzyć aplikacje o przejrzystej strukturze (w przypadku dużych aplikacji podejście to jest koniecznością).
Jeśli zmienna zawiera tablicę wartości lub inne obiekty, powinna być nazwana w liczbie mnogiej:
$numbers = [1, 2, 3];
Ponieważ wtedy możemy po prostu iterować wartości po jednej liczbie:
foreach ($numbers as $number) {// przetwarzanie liczb}
Nazwa składająca się z wielu słów jest łączona w jedno długie słowo za pomocą składni cameCase, tzn. pierwsze słowo zaczyna się małą literą, a każde następne wielką literą:
$promenna = 'Hej! Hej!';$seznamUzivatelu = ['Jan Barášek','Barack Obama','Steve Jobs','Stephen Wolfram',];$maxFilesInDirectory = 12;$nameOfPhpScript = 'index.php'; // Skrót PHP został pomniejszony
Funkcje i metody powinny zawsze jasno określać w swojej nazwie, co robią. Często w nazwie można również zawrzeć oczekiwane parametry wejściowe i wartość zwracaną.
Spróbuj odgadnąć, co robią poniższe funkcje i jaka jest ich wartość zwracana:
getUserById($id);saveErrorToLog($message);createDefaultDirectory($path);setAuthors(['Jan Barášek', 'Chuck Norris']);getCurrentTime();
Cała sztuczka tkwi w pierwszym słowie w nazwie, które jasno określa, jakiej metody użyje dana funkcja. Zwykle stosuje się następującą konwencję:
get
- pobieranie danych w postaci tablicy lub obiektu, parametry wejściowe określają poszukiwaną encjęsave
- zapis do pliku lub bazy danychcreate
- tworzenie encji (na przykład tworzenie instancji obiektu)set
- zapisywanie danych do predefiniowanej zmiennej (wewnątrz funkcji)Klasa jest dużą jednostką, która zawiera dużą liczbę właściwości i metod, dlatego też powinna zaczynać się od dużej litery. Klasa powinna również przenosić tylko jedną encję (i opisywać jej właściwości), dlatego powinna być nazwana nazwą pojedynczą. Jeśli musimy pracować z wieloma encjami, możemy po prostu przechowywać każdą instancję w tablicy.
Przykład:
class User{public string $username;public string $password;public string $role;}class Users{/** @var Użytkownik[] */public array $users;public function addUser(User $user): void{$this->users = array_push($this->users, $user);}}
Klasa User specjalizuje się w informacjach dotyczących tylko jednego konkretnego użytkownika. Jeśli chcemy pracować z wieloma użytkownikami, tworzymy kolejną klasę (envelope), która przenosi tablicę instancji określonej encji.
W tym celu często przydają się również fabryki, które pozwalają na łatwe tworzenie podobnych obiektów i recykling oryginalnych instancji, dzięki czemu kod jest bardziej przejrzysty i oszczędza zasoby systemowe.
Przestrzeń nazw jest niezależna od fizycznego katalogu, w którym dostępny jest skrypt, ale dobrą praktyką jest przynajmniej częściowe respektowanie układu projektu (co prowadzi do lepszego systemu tworzenia nowych nazw, który jest w ten sposób bardziej jednoznaczny).
Osobiście nazywam przestrzenie nazw zgodnie z podkatalogiem wspólnym dla klas tego typu.
Przykłady:
App\Presenters; // Oto nazwiska wszystkich prezenterówApp\Model; // Jest to nazwa modelu ogólnegoApp\Model\Math; // To jest nazwa modelu, który pracuje z matematyką
Aby zapewnić prawidłowe autoloadowanie klas, warto stosować się do standardu PSR-4.
A jak Ty nazywasz swoje? Będę wdzięczny za wskazówki, jak ulepszyć ten artykuł.
Ogólnie rzecz biorąc, niestandardowe konwencje w zespole nie mają większego sensu, ponieważ utrudniają przenoszenie kodu na inne frameworki, a kiedy zatrudnia się nowego pracownika, musi on nauczyć się aktualnych konwencji. Dlatego najlepiej jest stosować się do standardu PSR-4
.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl