Harmadik féltől származó csomagok használata felgyorsíthatja a projekt fejlődését. Előfordulhat, hogy extra funkciókat kell hozzáadnia, vagy javítania kell egy kritikus hibát. A Composer által telepített PHP-csomagokra a következőképpen alkalmazhat javításokat.
Mikor kell csomagot javítani
Először fontolja meg, hogy helyénvaló-e létrehozni egy projekten belüli javítást. A javításnak mindig kisebb változásnak kell lennie. Ha átfogó új funkcionalitást kell hozzáadnia, akkor nyisson meg egy kérdést a csomag ellen, vagy saját maga nyújtsa ki. Ez segít elkerülni a konfliktusokat a csomag fejlődésével.
Alaposan át kell gondolnia, hogy a kívánt változás valóban a projektjére jellemző-e. A függőségi javítások általában csak néhány kódsort érintenek. Olyan hibákkal és problémákkal foglalkoznak, amelyek egyébként megakadályoznák a csomag használatát. A legtöbb tapasz rövid távú jellegű. Később ezeket a forrás kódjaival kell helyettesíteni a csomag kódbázisában.
Végül meg kell mérnie a szándékait. Azonnal kezel egy csomaggal kapcsolatos problémát, vagy kibővíti a csomag funkcionalitását, hogy igazodjon a kódalapjához? Ha ez utóbbi, akkor fontolja meg, hogy hozzájáruljon a csomaghoz, vagy csomagolja azt olyan extra osztályokkal és funkciókkal, amelyek első osztályú polgárai a projektnek.
Zeneszerzői javítás létrehozása
Miután felhívta a javítást, elkezdheti a projekt előkészítését. A zeneszerző nem rendelkezik beépített patch támogatással, ezért a népszerűt fogjuk használni simplify/vendor-patches
projekt hozzáadni. Ez intuitív kezelőfelületet biztosít cweagans/composer-patches
hogy segítsen új javítások létrehozásában.
composer require --dev symplify/vendor-patches
Győződjön meg arról, hogy a javítandó csomag telepítve van-e a projektjében:
composer require example/broken-package
Ezután nyissa meg a problémás fájlt a kódszerkesztőben. Megtalálja a vendor
Könyvtár. Példánkban szerkesztenünk kell vendor/example/broken-package/src/Broken.php
:
<?php class Broken { public function __construct(string|int $foo) { if (is_string($foo)) { echo "Valid value!"; } } } ?>
Az Broken
osztály várhatóan mind a karakterláncokat, mind az egész számokat elfogadja A PHP 8 szakszervezet-típusai. Sajnos a forrást nézve kiderül, hogy valójában csak húrokat fogad el.
Fiktív példánkban a csomag karbantartója elismerte a problémát, de még nem hozott létre új kiadást. Javítsuk ki addig a problémát.
Másolja át a törött fájlt, változatlanul, és adjon hozzá egy .old
utótag:
cp vendor/example/broken-project/src/Broken.php vendor/example/broken-project/src/Broken.php.old
Ügyeljen arra, hogy ne szerkessze a .old
reszelő!
Ezután szerkessze a eredeti fájl, így megfelelően működik a kódbázisában. A helyben történő szerkesztés során a változtatások azonnal érvénybe lépnek. Ellenőrizze, hogy a kódbázisa most a várt módon viselkedik-e.
<?php class Broken { public function __construct(string|int $foo) { if (is_string($foo)) { echo "Valid value!"; } else if (is_int($foo)) { echo "Also valid!"; } } } ?>
A javítófájl létrehozása
Most már használhatja a symplify/vendor-patches
tervezzen egy javítófájl létrehozását a javításhoz. A csomag a vendor-patches
bináris, amely automatikusan beolvassa a vendor
könyvtárban megtalálja az elvégzett módosításokat.
vendor/bin/vendor-patches generate
A parancs futtatása diff-et generál az Ön számára. Mentésre kerül a patches
könyvtárat a projekt gyökerénél. A különbséget a .php
és .php.old
létrehozott fájlokat.
Újra futtathatja a parancsot, hogy felfedezhesse a hozzáadott új javításokat. Minden megváltozott fájl megkapja a saját javítását a patches
Könyvtár.
Automatikus javítás
A composer.json
fájlt, látni fogja, hogy egy új szakasz került hozzáadásra:
{ "extra": { "patches": { "example/broken-package": [ "patches/example-broken-package-src-broken-php.patch" ] } } }
Az patches
Az objektum a telepített csomagok nevét az alkalmazandó patch fájlok tömbjéhez térképezi fel. Ezeket a javításokat automatikusan alkalmazzák bármikor composer install
.
A telepítési szkriptet a simplify/vendor-patches
. Minden függőség telepítése után hívják meg. A szkript megnézi, hogy vannak-e meghatározva javítások a csomaghoz. A megtaláltakat automatikusan alkalmazza.
Látni fogja a sorokat a composer install
kimenet jelzi, hogy a javításokat mikor alkalmazták. Ha hibát jelentenek, használhatja composer install --verbose
hogy több információt kapjon a patch kihagyásának okáról. Ez gyakran annak köszönhető, hogy egy csomagfrissítés kijavította a javított problémát, és ezáltal a javítófájl feleslegessé vált.
Javítások eltávolítása
Ideiglenesen eltávolíthatja a javítást a törlésével composer.json
. Ez leállítja a tapasz alkalmazását, amikor Ön composer install
.
A javítás végleges törléséhez a projektből távolítsa el azt composer.json
vonal. Ezután eltávolíthatja .patch
fájl a projektjéből patches
Könyvtár.
Ha vissza szeretné állítani a helyileg alkalmazott javítást, a javítás törléséhez vagy letiltásához a legegyszerűbb a fenti lépéseket követni. Ezután eltávolíthatja a csomagot a vendor
könyvtárat és futtassa composer install
hogy visszatérjen a tiszta laphoz.