"Přináší dlouho očekávaný operátor pipe"
Přitom by pomohlo, kdyby string a další typy byl objekt.....
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.
Ten pipe mi přijde dost zbytečný, protože snad každý framework na to má nějaké fluentní řešení, ale je pravda, že bez frameworku je to závorkování dost nepřehledné. Možná ale místo nového operátoru šlo vytvořit jednoduchý objekt, inspirovat se frameworky, a vývoj směřovat spíše ke generikám, což prostě v PHP zoufale chybí...
Mne se v php ten pipe operator taky moc nelibi, prijde mne to min prehledne nez to puvodni zavorkovani. Na rozdil od shellu kde | pouzivam porad a je to super. Asi by bylo lepsi i objektove reseni.
Tyhle veci jsem nikdy nezavorkoval, ale pouzival docasnou promennou:
When using variables to hold the return values of another function call, PHP uses copy-on-write, which means that even though a new variable is created, it may not consume additional system memory until that variable is written. While pipes offer an overall cleaner code layout, using a temporary variable may not necessarily consume more resources.
.. a VCS vam nasobne podekuje, kdyz to budete mit po jednom volani na radku :)