Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
python week
Avatar
Pavel Indrák:22.12.2019 20:43

Ahoj,
mohl by mi někdo nastínit řešení nebo rovnou přidat řešení následují úlohy? Nějak si nedokážu představit jak to zadavatel úkolu myslí. Není mi hlavně jasné co je myšlenou objektovou reprezentací.
Díky

Vytvořte objektovou reprezentaci uvedených HTML elementů. Jedná se o input, select, a, img, div a
form. Následně pomocí této reprezentace vytvořte jednoduchý formulář, který uvedené HTML vypíše.
Na způsobu vypsání nezáleží. Při tvorbě dbejte zásad pro OOP a na čistý kód. Zadání zpracujte v jazyce
PHP nebo Python.

Díky za nápady.

 
Odpovědět
22.12.2019 20:43
Avatar
Daniel Vítek
Redaktor
Avatar
Odpovídá na Pavel Indrák
Daniel Vítek:22.12.2019 20:51
class A {
        private $href;
        private $title;

        public function setHref($href) {
                $this->href = $href;
        }

        public function getHref() {
                return $this->href;
        }

        public function setTitle($title) {
                $this->title = $title;
        }

        public function getTitle() {
                return $this->title;
        }

        public function render() {
                return '<a href="' . $this->href . '">' . $this->title . '</a>';
        }
}
Nahoru Odpovědět
22.12.2019 20:51
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Daniel Vítek
Peter Mlich:23.12.2019 11:39

Ty jo, tak tohle by mne fakt nenapadlo :) Konkretne ta posledni veta mela byt jako prvni.

Ja bych pouzil misto set, get toto

class A {
        private $vars;
        public function href($href=null) {
                if ($href==null) return $this->vars['href'];
                $this->vars['href'] = $href;
        }
        public function title($title=null) {
                if ($title==null) return $this->vars['title'];
                $this->vars['title'] = $title;
        }


        public function render() {
                return '<a href="' . $this->href() . '">' . $this->title() . '</a>';
        }
}

a nebo

class A {
        private $vars;
        public function var($name='', $value=null) {
                if ($value==null) return isset($this->vars[$name]) ? $this->vars[$name] : '';
                $this->vars[$name] = $value!=null ? $value : '';
        }

        public function render() {
                return '<a href="' . $this->var('href') . '">' . $this->var('title') . '</a>';
        }
}
 
Nahoru Odpovědět
23.12.2019 11:39
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.12.2019 11:40

Respektive bych si udelal univerzalni class pro tagy (z toho posledniho prikladu) a na ni definoval jakykoliv tag :)

 
Nahoru Odpovědět
23.12.2019 11:40
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Daniel Vítek
Redaktor
Avatar
Odpovídá na Peter Mlich
Daniel Vítek:25.12.2019 21:49

Jasně, pokud bude dynamicky skládat celý formulář, tak to určitě bude chtít minimálně interface.

Nahoru Odpovědět
25.12.2019 21:49
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Odpovídá na Peter Mlich
Pavel Indrák:25.12.2019 23:43

V prvé řadě chci říct, že nejsem tak pokročilý jako vy.
Té tvé první verzi rozumím asi tak ze všech nejvíce, přesto ale málo.
Snažil jsem se přes index.php použít tu třídu A cos vytvořil a vyechovat nějaký výstup z té funkce render, ale nějak to asi nechápu. Mohl bys mi prosím poslat nějakou ukázku jak z té funce dostat výstup? Nemusí to být ani ve formuláři.

Díky.
Díky i ostatním za příspěvky, i když jsem jim moc neporozumněl.

 
Nahoru Odpovědět
25.12.2019 23:43
Avatar
Milan Turyna
Redaktor
Avatar
Odpovídá na Pavel Indrák
Milan Turyna:26.12.2019 9:11
class A {
        private $vars;
        public function href($href=null) {
                if ($href==null) return $this->vars['href'];
                $this->vars['href'] = $href;
        }
        public function title($title=null) {
                if ($title==null) return $this->vars['title'];
                $this->vars['title'] = $title;
        }


        public function render() {
                return '<a href="' . $this->href() . '">' . $this->title() . '</a>';
        }
}

$html = new A();
$html->href('https://google.com');
$html->title('Zajímavý odkaz');
$title = $html->title();
$href = $html->href();
$render = $html->render();

// $title vrátí "Zajímavý odkaz"
// $href vrátí "https://google.com"
// $render vrátí <a href="https://google.com">Zajímavý odkaz</a>

Funguje to tak, že ty funkce (href, title), jsou univerzální a slouží jak k zápisu tak i výpisu, přímo v té funkci je přednastavený parametr takže když ho nevyplníme, tak to funguje jako výpis a když ho vyplníme tak je to zápis, v té funkci je podmínka která zjistí jestli chceš parametr vypsat nebo ne (jestli je argument = null).

Editováno 26.12.2019 9:12
 
Nahoru Odpovědět
26.12.2019 9:11
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Daniel Vítek
Peter Mlich:26.12.2019 13:57

Zkus pridat problemovy kod.

 
Nahoru Odpovědět
26.12.2019 13:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.