Jak pojmenovat: změna struktury versus kolekce rubrika: Programování: Jiné
Ahoj.
Struktura je například
{ name: "John Dee" age: 42 langs: [ {id: en, title: "engl"} {id: fr, title: "franc"} {id: la, title: "latin"} ] }
Kolekce je například
[ {id: en, title: "engl"} {id: fr, title: "franc"} {id: la, title: "latin"} ]
Chci vytvořit commandy, a na jazyk se mi vtírá slovo Mod[ify]. Jenže docházím k závěru, že je dost velkej rozdíl mezi změnou kolekce a změnou struktury. V případě změny kolekce používám dále commandy Del filter, Add filter. Což v případě struktury nemá smysl. Zřejmě. Teoreticky bych samozřejmě mohl psát změnu klíče struktury jakože filtr, no nejsem si jist.
Jak byste to pojmenovali? Nebo byste to nerozlišovali? Nebo něco jiného? Díky za postřehy.
PS: ModCollection a ModStruct mě samozřejmě napadlo :-)
Já to čemu říkáš "struktura" říkám Objekt a je to jen RO. A tomu čemu říkáš "kolekce" říkám buď řádek (Row) pokud je zdrojem více tabulek anebo záznam (Record) pokud je zdrojem jedna tabulka a je to tedy RW.
A v kódu volám funkce jako:
//"Jednozáznamové" načítání $ClovekRec = GetRec('lide', 'id', $HledaneId); //lide je primo název tabulky $ClvFirRow = GetRow('SELECT lide.*, firmy.nazev FROM lide LEFT JOIN firmy ON lide.firma_id = firmy.id WHERE lide.id = '.SafeValue($HledaneId)); $ClovekObj = GetObj('lide', 'id', $HledaneId); //To ze to má dotáhnout langs si to vezme z relací a natáhlo by to něco podobného tvé struktuře, akorát by tam byly i vázací id. //Operace nad record UpdRec('lide', 'id', $ZapisovaneId, ['prijmeni'=>'Novák']); UpdRec('lide', 'id', $ZapisovaneId, $ZmenyClovekaRec); InsRec('lide', ['prijmeni'=>'Novák', 'jmeno'=>'Jan']); InsRec('lide', $NovyClvRec); DelRec('lide', 'id', $MazenyClovekId); //Vícezáznamové načítání $LangRecs = GetRecs('jazyky', 'clovek_id', $HledaneClovekId); //Vrátilo by něco podobného tvé kolekci, zase včetně id-ček $LangRows = GetRows('SELECT jazyky.*, lide.prijmeni FROM jazyky LEFT JOIN lide ON jazyky.clovek_id = lide.id WHERE lide.id = ...'); $AktivniJazyky = ColumnRecs($LangRecs, 'lang_code'); //Vrátí něco jako ['en', 'fr', 'la'] $LideObjs = GetObjs('lide', 'firma_id', 5); //nemam nikdy jsem nepotřeboval, ale dovedu si představit //a kdybych filtroval v PHP a ne zásadně v db tak bych měl něco jako $FilterLangRecs = FilterRecs($LangRecs, 'lang_code', ['en', 'fr']); //dovedu si predstavit i $FilterObjs($ClovekObjs, 'age', ['42']); //a teoreticky i $FilterObjsSub($ClovekObjs, 'langs', 'lang_code', ['en', 'fr']); //Tohle už podle mne patří 100% do db, ale čistě teoreticky si dovedu představit ModifyRecs($LideRecs, function($Row) {$Row['age'] = $Row['age']+1; return $Row;});
ale nevím jestli Ti to k něčemu bude a není to moc OT. Protože já vlastně s datama ve smyslu filtrování, řazení, hromadné úpravy, atd... v PHP nepracuju. To dělám v db. PHP vlastně slouží jen pro zápis a výpis dat.
PS: Dokonce jsem tuhle zjistil, že v nějakých projektech jsem ani nenastavil internal_encoding na UTF, protože s těma datama tam normálně vůbec nic nedělám :-).
Pro zobrazení všech 2 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře