PHP Development. Komponent konsoli Symfony - porady i wskazówki
Ten artykuł został stworzony w celu pokazania najbardziej przydatnych i przydatnych wskazówek i sztuczek dotyczących rozwoju konsoli Symfony.
Napisano już niejeden artykuł na temat błędów popełnianych w procesie prowadzenia projektu, ale rzadko kiedy przygląda się wymaganiom projektu i zarządza ryzykiem, biorąc pod uwagę wybraną technologię.
PHP, podobnie jak inne języki, ma pewne wady, które są nic nie warte, jeśli chodzi o zarządzanie IT projekt gdzie PHP jest językiem wiodącym.
Poniżej przedstawiamy ich listę wraz ze wskazówkami, jak ich uniknąć.
PHP jest uważany za "łatwy język", ponieważ ma bardzo niską barierę wejścia. Powoduje to duże rozbieżności w standardach kodowania i sposobie implementacji globalnych interfejsów w różnych bibliotekach zewnętrznych. Aby zaprowadzić porządek, wprowadzono zestaw standardów. Opisują one zestaw sposobów, w jakie twórca implementacji może spełnić dowolny zestaw ograniczeń wymaganych przez standard. Prosty przykład dla Dyspozytor zdarzeń:
Słuchacz - słuchaczem jest każdy PHP callable, która oczekuje przekazania zdarzenia. Zero lub więcej listenerów może otrzymać to samo zdarzenie. Słuchacz MOŻE wywołać inne zachowanie asynchroniczne, jeśli tak zdecyduje.
Korzystając z tego standardu, każdy deweloper używający nomenklatury zgodnej z PSR może nie tylko łatwo komunikować się, ale także kod z innymi deweloperami.
Zastosowanie tych standardów w praktyce, na przykład poprzez użycie PHP Właściwy sposób wytyczne i biblioteki, które obsługują globalne interfejsy PSR, umożliwiają Programiści PHP szybsze dostosowywanie się do zmian w wymaganiach funkcjonalnych, architektonicznych i infrastrukturalnych.
Jako opiekun bazy kodu zawsze pamiętaj o korzystaniu ze sprawdzonych i stabilnych wersji zewnętrznych bibliotek, a jeśli jesteś zmuszony do korzystania z niestandardowego rozwiązania, zaimplementuj je za pomocą PHP PSR.
Lista wszystkich dostępnych standardów jest dostępna na głównej stronie internetowej PHP-FIG. Rozszerzone standardy z praktycznymi opisami są dostępne w różnych formatach na stronie PHP Właściwy sposób strona główna.
Najlepsze biblioteki zgodne ze standardami PHP-FIG są wymienione na stronie PHP League strona internetowa.
W projektach korzystających z menedżera zależności Kompozytor Często dochodzi do sytuacji, w której po długim okresie wsparcia i utrzymania produkt W środowisku produkcyjnym pojawia się potrzeba wdrożenia zmian funkcjonalnych bez przebudowy całej architektury. Najczęściej projekt przejmuje wówczas programista, którego zadaniem jest uruchomienie lokalnego środowiska deweloperskiego i rozpoczęcie pracy nad ticketami. Na podstawie composer.lock
deweloper jest w stanie przywrócić projekt do stanu, w którym znajdował się w środowisku produkcyjnym, ale każda zmiana w pliku composer.json
np. poprzez dodanie biblioteki, spowoduje kaskadę błędów, które wydłużą rzeczywisty czas implementacji nowego pliku. zespół członka organizacji, a także czas opracowania rozwiązania.
Gdy aplikacja jest już stabilna, opiekun kodu powinien zablokować wersje bibliotek w folderze composer.json
i stworzyć jasną procedurę opisującą, jak zaktualizować ich wersje, jeśli zajdzie taka potrzeba w przyszłości.
Warto również rozważyć uruchomienie mechanizmu sprawdzania stanu bezpieczeństwa używanych bibliotek i zautomatyzować proces dostarczania aktualizacji zabezpieczeń.
Korzystając z bezpłatnych narzędzi, takich jak Dependabotmożemy zarówno utrzymać spójną, łatwą w zarządzaniu infrastrukturę wersjonowania dla zależnych bibliotek, jak i zapewnić gwarancję bezpieczeństwa dla naszej aplikacji.
> To tylko CRUD, po co zawracać sobie głowę?
> Istnieje biblioteka, która dokładnie to robi!
W PHP łatwo wpaść w wir zapomnienia podczas implementacji logiki biznesowej produktu. Przez lata powstały setki projektów, które [tworzą panele administracyjne do zarządzania modelami danych](https://backpackforlaravel.com/), [generują widoki podobne do Google Analytics](https://github.com/Kunstmaan/KunstmaanDashboardBundle) lub [rozwiązują problemy asynchroniczne PHP](https://laravel.com/docs/9.x/octane) za dotknięciem magicznej różdżki (OK, za pomocą pojedynczego zapytania w wierszu poleceń).
Świat PHP jest pełen gotowych implementacji, które działają przez 99,9% czasu.
To 0.1% jest miejscem, w którym logika biznesowa zderza się z ograniczeniami funkcjonalnymi używanych bibliotek.
To właśnie te tak zwane "wrzutki" są najtrudniejsze do wdrożenia pod koniec projektu.
Nie ma szans na znalezienie złotego środka pomiędzy nadmiarem a niedomiarem inżynierii bez odpowiedniego zrozumienia domeny biznesowej produktu.
Rozpoczynając zespół programistów Członkowie na wczesnym etapie tworzenia produktu i proaktywna współpraca z właścicielem produktu pozwalają zminimalizować ryzyko wystąpienia problemu związanego z wykorzystaniem rozwiązania, które nie sprawdzi się jako długoterminowa inwestycja.
PHP nie jest idealna, to pewne. Jego niedociągnięcia w zakresie statycznego typowania, braku obsługi generycznych i ciągłego wsparcia dla archaicznych metod są nadal źródłem żartów wśród programistów. Jednak od pewnego czasu Programiści PHP otrzymują coraz potężniejsze narzędzia, takie jak PHPStan, Xdebug, PHP-CS-Fixer które pozwalają im zachować spójność i statyczne typowanie - unikając w ten sposób wielu błędów. Wciąż jednak zbyt mało uwagi poświęca się testom, a te, jeśli są poprawnie zaimplementowane, przynoszą szybki zwrot z inwestycji w postaci
- redukcja błędów regresji
- Zwiększona świadomość możliwości produktu
- zwiększenie poczucia własności kodu przez programistę
Nie tnij kosztów na testowaniu. Pisanie prostych skryptów Behat naprawdę nie jest takie trudne, nie musisz od razu pisać skomplikowanych testów end-to-end ani zagłębiać się w szczegóły implementacji i testować jednostkowo każdej metody.
Prosty test Behat opisany w naturalnym języku domeny jest często wart więcej niż najbardziej skrupulatnie napisany test end-to-end.
The Język PHP i jego dwa najpotężniejsze frameworki Laravel i Symfony są w pełni odpowiednie do stworzenia nowoczesnej, funkcjonalnej i co najważniejsze wysokowydajnej architektury. Wsparcie dla różnych systemów kolejek komunikatów i coraz szybszego PHP Poprawa wydajności z wersji na wersję pozwala nam łatwo tworzyć mikrousługi oparte na mikroframeworkach. W większości jednak nadal polegamy na systemach monolitycznych. Nie ma w tym nic złego, ale rozważając rozwój takich systemów musimy zwrócić szczególną uwagę na granice domeny i określić punkt styku nowych rozwiązań ze starszymi częściami systemu.
Podczas opracowywania dowolnego PHP warto przyjrzeć się obecnym rozwiązaniom, stworzyć globalne interfejsy do komunikacji danych i wdrożyć nowe funkcjonalności z wykorzystaniem najnowszych technik i praktyk. Jednym z najpopularniejszych rozwiązań stosowanych w praktyce jest Wzór Dusiciela.