![]()
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.
