Vlastní knihovnu ve vendor se nedaří načíst
- Terka04
- Člen | 44
Zdravím všechny,
ráda bych si vytvořila vlastní knihovnu, kterou bych později ráda
publikovala na github, abych ji mohla stahovat do projektů přes composer. Ale
problém nyní.
Vlezla jsem do vendor a založila adresář „terka“, do něj „nazevknihovny“ a tam mám LICENCE, README.md, composer.json a adresář src, ve kterém mám samotnou knihovnu. Tedy stejně, jako vypadají jiné knihovny z packagist.org.
Do presenteru jsem potom dala:
use terka\nazevknihovny;
$promenna= new \terka\nazevknihovny();
V knihovně mám nastavený namespace na „terka\nazevknihovny“.
A dostávám chybu „Class ‚terka\nazevknihovny‘ not found“. Myslela jsem, že to robotLoader automaticky najde a „requirne“. Co je ještě potřeba správně udělat? Na co jsem zapomněla?
Děkuji všem za pomoc. :)
Editoval Terka04 (16. 2. 2022 10:09)
- Marek Bartoš
- Nette Blogger | 1280
Balík nestačí mít ve složce vendor, musíš o něm Composeru říct
tak, že jej přidáš přes composer require vendor/package
.
Název je v composer.json
v klíči name
Aby ti Composer našel balík, který máš u sebe v počítači a ne na
Packagistu, tak jej musíš přidat v composer.json
v projektu
v sekci repositories
. Díky tomu ví, že má při
composer require
cesta prohledat a nebudeš muset mít balík
přímo ve vendoru – Composer ti jej tam při instalaci sám vloží, pomocí
symbolického odkazu
"repositories": [
{
"type": "path",
"url": "../local_package",
"options": {
"symlink": true
}
}
],
Robotloader by určitě vendor prohledávat neměl a rozhodně to tak nedělá by-default. Standardní cesta je nastavit si v composer.json knihovny autoloading pomocí PSR-4 https://getcomposer.org/…04-schema.md#…
Možná tě Composer při instalaci upozorní, že daný balík neexistuje
v požadované stabilitě „stable“. To vyřešíš tak, že Composeru
dovolíš stahovat nestabilní závislosti. Je nutné umístit do
composer.json
v projektu, nastavení je root-only:
"minimum-stability": "dev",
"prefer-stable": true,
Píšeš, že namespace máš terka\nazevknihovny
a dále
v kódu máš new terka\nazevknihovny()
– nejmenuje se třída
kterou chceš vytvářet spíše
terka\nazevknihovny\nazevtridy
?
Editoval Marek Bartoš (16. 2. 2022 10:24)
- Marek Bartoš
- Nette Blogger | 1280
@Terka04 Ještě mě tak napadá, že bys mohla zkusit můj orisai/library-template, pokud chceš i automatizaci připravenou na použití.
Momentálně jsou tam v základu připravené testy přes phpunit a infection, code coverage na coveralls.io, analýza kódu přes phpstan a coding standard. Všechny skripty jsou připravené v Makefile a pouští se na Github Actions.
Nynější dokumentace by měla být dostačující pro start, po stížnosti nejasnosti rád doplním