1516
Vývoj / Re:Rozlišení objektu v PHP
« kdy: 24. 01. 2018, 21:20:53 »Nepředávej objekty do konstruktorů, vytvoř jim privátní a veřejné vlastnosti a předávej tyto. Používej dědičnost.
Co ho to učíš?!
Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.
Nepředávej objekty do konstruktorů, vytvoř jim privátní a veřejné vlastnosti a předávej tyto. Používej dědičnost.
Nevidím k tomuto doporučení žádný důvod.
Ahoj,
když mám takový poleKód: [Vybrat]a potřebuji zavolat funkci a předat 4 parametry$arr = ('a'=>'A', 'b'=>'B','c'=>'C'); //Jen nástřel, jedna se o velký poleKód: [Vybrat]zavolej_funkci('A','B','C');
call_user_func_array('zavolej_funkci', $arr);To předpokládá správné pořadí v tom poli.zavolej_funkci($a, $b, $c, $d);Je to funkční, ale vůči lokálnímu kontextu dost drsné. Takže to dělej alespoň v nějaké funkci, ať si něco nepřepíšeš. Na druhou stranu to rovnou můžeš tu funkci volat:zavolej_funkci($arr['a'], $arr['b'], $arr['c'], $arr['d']);Bude to čistější, bezpečnější a přehlednější.zavolej_funkci($arr);To už ale trochu smrdí, a pouvažoval bych, zda to pole musí být opravdu tak velké. Opravdu ta funkce zpracovává všechny argumenty? (Třeba jo, neříkám nic.)zavolej_funkci($arr['a'], $arr['b'], $arr['c'], $arr['d']);Stovky položek nepředstavují problém, protože to pole se stejně předává odkazem.
Nepředávají. Odkazem se předávají jen objekty.
Pole se v PHP kopíruje líně, tedy až v okamžiku, kdy ho začneš modifikovat, což se běžně nedělá. Výkon tím tedy nijak netrpí.
Stovky položek nepředstavují problém, protože to pole se stejně předává odkazem.
Z tohoto duvodu pouzivame mysi ze dreva nebo rucne placane keramiky, aby to stylove sedelo.
me vynech z techto novot, ja mam mys z pestniho klinu
windows má př: skupinu Trustedinstaller to jsem tet pochopil že linux takové skupiny nevede a jak tyhle "skryté" skupiny fungujou ve windows
zacinaji se tady na builderu rozmahat dotazy, ktery nemaji hlavu ani patu
a vypadaji, jakoby byly napsany imbecilem nebo pubertakem. Asi by to misto
odpovidani chtelo opet odkazovat na "stare otazky"
-- slave, builder.cz - PHP (28.12.2008)
... Protected je contract. ...
U čeho mi naopak uniká rozumný důvod, proč existuje, je private. Poděděná třída má mít možnost přistupovat k vnitřnímu stavu děděné třídy, jinak je dědění velmi omezené ...
Měl bych to řešit? Měl bych to vědět?No jasně. To známe. Ale já se ptám proč by to tak mělo být řešené? Není to poněkud zbytečně složité? Proč to prostě není v té metodě start?
Vy víte, co se děje mezi začátkem start a spuštěním run?
Ano, souhlasím s tím, že protected je k ničemu. (Dokonce ho už nějaký ten pátek v žádném mém kódu nepoužívám.)
Polož si otázku: proč by měl někdo bránit tomu, aby se zavolala metoda run napřímo? Proč není ta třída navržena tak, aby napřímo volat šla?
Protože konkrétně ten Thread se pouští přes metodu start, ta je veřejná a metoda run má sloužit pro implementaci toho, co má to vlákno provádět. Někdo by si to mohl třeba spléct a zavolat run v domnění, že to pouští to vlákno. Kdyby byla protected, tak by se to nestalo. Mně se to prostě nelíbí.
No jako teoreticky by to mohlo jít tak, že bych úplně upustit od toho klasickýho konceptu, co je vidět skoro všude, ale udělat to spíš tak, že by se vlákno vůbec nedědilo za účelem implementace logiky, co má vykonávat (překrytí nějaká PROTECTED metody), ...To, že je to vidět skoro všude neznamená, že to je dobře. Já bych klidně tvrdil, že je to prostě špatně :-)
...