Wpis z mikrobloga

Wygrzebałem sobie stary projekt w #php żeby coś w nim zaktualizować, ale było mi wstyd przed samym sobą ręcznych autoload/require once oraz braku testów, więc trochę w ramach masochizmu postanowiłem to ucywilizować:
- opakowałem w composera – OK, działa
- dopisałem jakieś proste testy, i z wciąganiem require once też było OK

Schody się zaczęły kiedy zachciałem dodać autoloada w composer.json (psr-0 / psr-4), np.

"autoload": { "psr-4": { "superapka\": ["src/"] } }
Wstępnie wygląda na podefiniowane dobrze, i IntelliJ też rozumie tą konfigurację (nie rzuca warningów, rozpoznaje ścieżki, sugeruje usunięcie zbędnych use w tych samych namespace itd).

Ale przy próbie uruchomienia z php -S ... albo odpaleniu testów dostaję błąd typu

Uncaught Error: Class 'MySuperUtil' not found in index.php:25
albo

Class 'superapka\MySuperUtil' not found .../tests/MySuperUtilTest.php:30
Macie jakieś pomysły o czym jeszcze mogłem “zapomnieć”, żeby taki autoload ruszył?

Cały “projekt” wygląda mniej więcej tak:

- src
|- index.php
|- MySuperUtil.php
- tests
|- MySuperUtilTest.php
- composer.json
---

MySuperUtil.php

namespace superapka;
class MySuperUtil {

}
---

index.php

namespace superapka;
...
$mySuperUtil = new MySuperUtil(); // <--- tu się wywala gdy wołane z przeglądarki

---

MySuperUtilTest.php:

declare(strict_types=1);
namespace superapka;
use PHPUnit\Framework\TestCase;
class MySuperUtilTest extends TestCase
{
private $mySuperUtil;
protected function setUp(): void
{
$this->mySuperUtil = new MySuperUtil(); /// <--- tu się wywala uruchomienie testu
}

}
---

oczywiście wszystkie pliki rozpoczynają się długiego taga otwierającego, ale zyebany wykop nie pozwala dodać takiego wpisu jako uber-niebezpieczny ¯\(ツ)_/¯
  • 1