Portál AbcLinuxu, 12. května 2025 02:05

Dotaz: PHP - Jak vracet data z clas Model ?

26.4.2014 15:09 MAF
PHP - Jak vracet data z clas Model ?
Přečteno: 269×
Odpovědět | Admin
Ahoj. pokud model namá obsahovat html, zajímalo by mě jak mám tedy nachystat data pro class View? Díky

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.4.2014 15:41 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Například do seznamu, slovníku či stromu. Prostě do nějaké kolekce.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
26.4.2014 16:49 MAF
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
To myslíš takto ?
$arr['title'][0] = 'text';
$arr['page'][0] = 'text';
$arr['page'][1] = 'text';
$arr['page'][2] = 'text';
$arr['title'][1] = 'text';
$arr['ul'][0][0] = 'text';
$arr['ul'][0][1] = 'text';
$arr['ul'][0][2] = 'text';
$arr['title'][2] = 'text';
$arr['ul'][1][0] = 'text';
$arr['ul'][1][1] = 'text';
$arr['ul'][1][2] = 'text';
$arr['ul'][1][3] = 'text';
26.4.2014 17:16 Sten
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Ne, tohle je zase jenom HTML, model by měl být sématický. Spíš něco jako:
{
    "title": "My Page",
    "sections":
    [
        {
            "title": "First section",
            "text": "Bla bla bla bla"
        },
        {
            "title": "Second section",
            "text": "Bla bla bla bla"
        },
        {
            "title": "Third section",
            "text": "Bla bla bla bla"
        }
    ],
    "author": "J. Random Author",
    "date": 1398525291
}
26.4.2014 17:22 MAF
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Hm, tak to jsem nikdy neviděl :-( a jak to prosím vypíšu ve třídě View? Je to celé? To je pole? Díky
26.4.2014 17:46 Sten
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Tohle je JSON, při přepisu do PHP by to vypadalo nějak takhle:
array(
    "title" => "My Page",
    "sections" => array(
        array(
            "title" => "First section",
            "text" => "Bla bla bla bla"
        ),
        array(
            "title" => "Second section",
            "text" => "Bla bla bla bla"
        ),
        array(
            "title" => "Third section",
            "text" => "Bla bla bla bla"
        )
    ),
    "author" => "J. Random Author",
    "date" => time()
)
26.4.2014 23:29 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Použití JSON místo HTML je jak z bláta do louže. Je zbytečné data získaná z modelu nějak serializovat, ve vieweru zase deserializovat a znovu serializovat do HTML. Je lepší použít k přenosu nějakou kolekci, která se dá přímo zpracovat v šabloně. Třeba DOM.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.4.2014 12:42 Matlák
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Myslím, že Sten použil JSON proto že je to rychlejší psát, než asociativní pole v PHP. Jinak rozhodně souhlasím s tím že Model nemá vůbec tušit k čemu data budou, ostatně rozdělení zodpovědností mezi Model a View je asi jediný rozumný důvod, proč vůbec mít dvě třídy a ne jednu co dělá všechno a ještě uvaří kafe.
27.4.2014 12:54 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Pro rychlejší zápis kolekcí se přece používají nástroje editorů a IDE. Do kódu bych takové záležitosti netahal.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.4.2014 14:58 Sten
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
No, to záleží na použití, já třeba často používám JSON-RPC, tak jsem zvyklý tak i popisovat modely. JSON navíc snadno uděláte sémantický, HTML, i přes velkou snahu, nikdy jednoduše sémanticky použitelné nebude. Tady to ale spíš byla ukázka, jak by měla vypadat ta data, než že by se tak měla serializovat.
26.4.2014 21:49 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Pokud tam máš 13 odstavců s obsahem "text", tak spíš takto:
for ($i = 0; $i < 13; $i++)
    $arr[] = 'text';
Slova "title", "ul" apod. si nechej do vieweru. Model vůbec nemá tušit, k čemu ta data použiješ - jestli do HTML nebo třeba do LaTeXu.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.4.2014 09:51 Logik
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nijak. Do view můžeš poslat klidně celý model, který bude mít patřičné metody na zpřístupnění svých dat. Přesypávat je z modelu do nějaké další struktury je kontraproduktivní - jednak to bude méně strukturované a tedy méně čitelné, jednak si bude muset člověk, co s tím bude pracovat, muset pamatovat dvě věci: strukturu modelu a strukturu "rozhraní mezi modelem a view".

Pokud jedno view řeší více objektů, pak ty objekty mají něco společného a tedy je na místě to společné implementovat jedním rozhraním a tedy stejně (a proto není třeba data z objektu nějak dále "transformovat" pro view).

Transformovat model pro view má smysl imho pouze v případě, kdy to slouží k ochraně dat, tj. aby view nemohl objekt v žádném případě modifikovat. To má smysl ale pouze u velkých projektů, kdy view dělají "lopaty, kterým se nedá věřit :-)".
Josef Kufner avatar 27.4.2014 14:32 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Existuje věc zvaná View-Model, který překládá data mezi view a zbytkem aplikace. Hodí se to, pokud zobrazovaná data neodpovídají 1:1 datům ve skutečném modelu. Takže například controller pak může posbírat data z více zdrojů a předat je do view nějak kultivovaně. Naopak pak view může mít implementovaný obecný dvoucestný data-binding, neboť bude vždy pracovat se stejným intefacem view-modelu.
Hello world ! Segmentation fault (core dumped)
Josef Kufner avatar 27.4.2014 14:37 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
model namá obsahovat html
Toto je zcela špatně. Pointa není v použitém jazyku, ale v rozdělení aplikace do specializovaných vrstev, které spolu komunikují jen na explicitně uvedených místech. Tím se zabrání kombinatorické explozi počtu interakcí mezi částmi programu (tj. rozdíl v práci na programech o 10k a 100k řádcích je jen malý).
Hello world ! Segmentation fault (core dumped)
28.4.2014 16:01 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
1+
-- OldFrog
rADOn avatar 28.4.2014 17:42 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: PHP - Jak vracet data z clas Model ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechci vypadat jako kverulant, ale jestli mas v ruce tolik dat ze je muzes rucne bouchat do kodu a musis se takhle ptat, tak zadny modely, pohledy ani cely MVC nepotrebujes.

Az budes mit ulohu kterou je prilis komplikovany resit sablonovacim systemem, tak si vzpomen na MVC.
"2^24 comments ought to be enough for anyone" -- CmdrTaco

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.