Hlavní navigace

Názor ke článku PHP Jet - Dependency Injection, továrny a tak dále od BoneFlute - $product = Product::get( $id ); a $product = $product->get(...

  • 12. 2. 2023 5:14

    BoneFlute

    $product = Product::get( $id );
    a
    $product = $product->get( $id );

    se liší jen ve filozofii.
    V prvém případě mám defakto globální objekt. Veškerá logika rozhodování odkud nebo dokonce co získám je definována vevnitř. Abych tuto logiku mohl nějak ovlivnit musím najít správné místo a šáhnout dovnitř. Nemohu mít dvě instance jen různě nakonfigurované (třeba porovnávat ze dvou různých zdrojů.)

    V druhém případě mám instanci. Ta někde vzniká. Což má za důsledek že nejenom že to jde snadno najít, ale taky ten vznik mohu snadno nahradit za své řešení - je to jen proměnná.

    Toto:

    Product:setPer­sistance("sla­ve")
    ... naka logika
    Product:setPer­sistance("mas­ter")
    ... jina logika

    je v celku provařená věc. V průběhu času se vám mění chování toho objektu. Velice nepříjemné. Nemám to rád.