Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Úkol v PHP

Aktivity
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
Odpovídá na Pavel Indrák
Neaktivní uživatel: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
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Neaktivní uživatel
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
Avatar
Odpovídá na Peter Mlich
Neaktivní uživatel: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
Neaktivní uživatelský účet
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
Tvůrce
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
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Neaktivní uživatel
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.