nette / docs

📖 The Nette documentation
https://nette.org/en/writing
116 stars 283 forks source link

Update services.texy - Add setup method chain #1032

Closed zeleznypa closed 11 months ago

zeleznypa commented 11 months ago

Just add missing information

dg commented 11 months ago

To je super užitečné, jen ta první věta není moc srozumitelná :-) Nechtěl bys zkusit třeba GPT, aby to vygeneroval nějak jinak?

zeleznypa commented 11 months ago

@dg Zkusil jsem, ale výstup je otřesný:

V této ukázkové části kódu ukazujeme, jak efektivně nastavit a konfigurovat naši službu. Někdy může být situace, kdy musíte volat metodu služby a teprve na základě jejího výstupu upravit specifické nastavení. Tato technika je užitečná, když chcete dosáhnout pokročilého chování služby v závislosti na dynamických faktorech.

Tento kód ukazuje, jak provést tento postup v naší službě. Jedná se o klíčový koncept, který umožňuje flexibilitu a personalizaci nastavení služby podle aktuálních podmínek. Mějte na paměti, že tento přístup byl navržen s ohledem na složitější scénáře konfigurace.

nebo

Abychom dosáhli požadovaného nastavení služby, může být nutné provést následující postup: Nejprve zavolejte metodu služby a poté, když získáte její výstup, aplikujte příslušné konfigurace. Tato sekvence je klíčová pro dosažení korektního chování služby a zajišťuje, že všechna nastavení jsou použita v souladu s očekáváním. Tato metoda se používá v situacích, kdy je nutné, aby nastavení byla závislá na výstupu metody služby
dg commented 11 months ago

Teď se na to dívám pozorněji a vlastně tomu moc nerozumím :-) Chápu dobře, že pointou je sdělit, že pokud za getConfig() volám ::setFoo(), je potřeba to psát jako @self::getConfig()::setFoo()?

zeleznypa commented 11 months ago

Pointou je, že když je potřeba za na výstupu z getConfig() zavolat ->setFoo(), tak nette/neon zařve, že pomlčka je unexpected.

A lze to vyřešit zavoláním ::setFoo, ovšem jen za předpokladu, že už si ty :: použil dřív a proto @self::getConfig()::setFoo

Prakticky pak třeba na SymfonyCommand->getInput()->setName a jiné podobné radosti.

prostě někdy některé třídy nezpřístupňují to co chceš nastavit napřímo, ale musíš krzevá nějakého prostředníka ;)

dg commented 11 months ago

Takže v sekci 'setup' by se měla zopakovat věta z 'vytvoření služby', že „Pro jednoduchost se místo -> používá ::“, ok?

zeleznypa commented 11 months ago

A pro jistotu včetně příkladu, protože varianta

- getConfig()::setFoo() nefunguje a je opravdu potřeba - @self::getConfig()::setFoo()

dg commented 11 months ago

Na to jsem se právě ptal. Protože to, že je tam potřeba psát @self, je spíš chyba.

dg commented 11 months ago

Tak už je to z textu snad jasnější. To @self::getConfig() se pokusím opravit v kódu.

zeleznypa commented 11 months ago

@dg Perfektní, díky