Protože není žádný důvod, aby existovaly primitivní datové typy. Když se podívám na ten nový zápis:
$title = ' PHP 8.5 Released ';
$slug = $title
|> trim(...)
|> (fn($str) => str_replace(' ', '-', $str))
|> (fn($str) => str_replace('.', '', $str))
|> strtolower(...);
var_dump($slug);
a srovnám to se zápisem:
$title = ' PHP 8.5 Released ';
$slug = $title
-> trim()
-> replace(' ', '-')
-> replace('.', '')
-> tolower();
var_dump($slug);
Mám z toho pocit, že řetězec jako objekt má určité výhody:
Tak v PHP mate volbu - ten String class si tam muzete fakt udelat sam (nebo pouzit jednu z existujicich OSS implementaci).
Ze ten zapis vypada blbe, je jen dusledek pouzivany nevhodnych funkci v pipeline.. jiste, neda se tomu vzdy vyhnout.. ale vi se o tom:
However, the pipe operator comes with some limitations. They are suitable when all of the functions in the chain require only one parameter, have return values, and do not accept by-reference parameters.
obavam sa ze OOP ani FP neni o dlzke kodu. FP + Moduly sú flexibilnejšie ako OOP. Pri OOP sú metódy pevne zviazané s objektom pri FP môžem na string aplikovať sadu funkcii z modulu String ktorý bude obsahovať funkcie na prácu s textom, alebo môžem použiť modul Stack ktorý bude so stringom pracovať ako so zásobníkom charov, alebo môžem použiť modul Regex ktorý bude s stringu niečo hľadať atď. by sme dosiahlinieco podobne pomocou OOP interfacou musime x krat porusit DRY. OOP ma zase ine vyhody oproti FP (DI). najlepsie pouzivat to co sa mi hodi a nebyt zaslepeny ani na jednu stranu. proste obcas je lepsie kladivo obcas vrtacka.