NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 8 - Polymorfismus, finální prvky a autoloader v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Vít Cigánek:12.10.2015 9:38

Tak načítaní tříd jsem vyřešil takto. Ted už mi zbývá vyřešit jenom to pole.

set_include_path(get_include_path() . PATH_SEPARATOR . 'tridy/');
spl_autoload_extensions('.php');      // alternativa spl_autoload_extensions('.php, .inc');
spl_autoload_register();
Editováno 12.10.2015 9:41
 
Odpovědět
12.10.2015 9:38
Avatar
Vít Cigánek:12.10.2015 11:48

Já nechápu, že nikde není postup, jak udělat objekt s parametry.

Když bude skript vypadat nějak takto.

if(podmínka1)
$select1  // vyber z databáze například uživatel
pole1=new Pole($select1)
pole1=vlozprvek();
pole1=smazprvek($parametr);
pole1=zobraz();

if(podmínka2)
$select2  // vyber z databáze například pokročilý uživatel
pole2=new Pole($select2)
pole2=vlozprvek();
pole2=smazprvek($parametr);
pole2=zobraz();

if(podmínka3)
$select3  // vyber z databáze například administrátor
pole3=new Pole($select3)
pole3=vlozprvek();
pole3=smazprvek($parametr);
pole3=zobraz();

Přece to pole nemůžu nastavovat ve třídě, to bych pak musel pro každý select dělat novou třídu. A další věc je ta, že když dam funkci smazprvek, tak mi zmizi jenom z toho pole. Nikoliv z databaze.

 
Odpovědět
12.10.2015 11:48
Avatar
Vít Cigánek:12.10.2015 11:55

parametry bych chtěl předávat nějak takhle

$pole = New Pole(array(a,b,c,d)); nebo
$pole1 = New Pole(array('a=>b','c=>d'));
 
Odpovědět
12.10.2015 11:55
Avatar
szymsza
Tvůrce
Avatar
szymsza:22.3.2016 12:47
"Autoloader je potřeba umístit v celé aplikaci pouze jednou, někam na začátek (klidně do indexu). O načítání tříd se již více nemusíme starat."

Tohle jsem moc nepochopil, resp. se mi to zdá divné. Takže když autoloader vložím dejme tomu do indexu, a potom budu chtít načíst nějakou třídu v úplně jiném souboru, tak se o to nemusím starat i když nemá ten soubor ani třída zmínku o indexu? To by bylo kouzelné :-)

 
Odpovědět
22.3.2016 12:47
Avatar
Pavel Kubalík:9.2.2021 15:22

Dobrý den
Uzavírám tuto lekci, i když mám hotové jen dva příklady. Třetí příklad se snažím pochopit, ale zatím jsem jen na začátku. Pochopil jsem zatím jen malinko. Jak vytvořit arénu se snažím studii příklad v některém z předchozích příkladu (zejména ten kde se parkuje auto do garáže). Dávám však přednost postupu dopředu - ke statice. K příkladu se vrátím později a uvidíme. I ty dva příklady pokládám za úspěch.
Děkuji PK

 
Odpovědět
9.2.2021 15:22
Avatar
Yuriy Tretyachenko:22.3.2021 4:39

No, jsem puvodne lekar, a kazdy lekar tak trochu i biolog. O tom polymorfizmu mohl bych vykladat nejmin tak asi hodinu. A tady je to vse jednoduche. Az toho polymorfizmusu nejak lito

 
Odpovědět
22.3.2021 4:39
Avatar
Odpovídá na Pavel Kubalík
Yuriy Tretyachenko:22.3.2021 4:58

nedelej s tim tretim ukolem hlavu - ja jsem to hodil a pokracoval dal. Kdiz se vratim, tak nebudu pouzivat jejich promenne - udelam svoje

 
Odpovědět
22.3.2021 4:58
Avatar
Yuriy Tretyachenko:22.3.2021 5:00

no, kdyz mne to nepusti, tak udelam podle Vas

 
Odpovědět
22.3.2021 5:00
Avatar
Dušan Kovářík:23.7.2021 7:13

To automatické načítání tříd je skvělé. Doufal jsem, že bude existovat nějaký lepší způsob, než si všechny třídy načítat manuálně.

 
Odpovědět
23.7.2021 7:13
Avatar
Marcel Sup
Člen
Avatar
Marcel Sup:23.7.2021 17:58

To automatické načítaní tříd se mi také zalíbilo. Při testování jsem však zjistil, že je nutné dát na začátek aktuální stránky odkaz k načtení stránky, která "autonačítání" tříd obsahuje.
Dále mi vrtalo hlavou, jak to udělat, aby to fungovalo i v případě, kdy je tříd hodně a jsou rozstrkané v ruzných adresářích a podadresářích. To už bylo trochu nad moje síly a schopnosti - a tak mi pomohl syn.

<?php
                    function nactiTridu($trida)
            {

                        nactiTriduZAdresare($trida, "tridy");

            }
            function nactiTriduZAdresare($trida,$adresar ){
                if (is_file ("$adresar/$trida.php")){
                    require "$adresar/$trida.php";
                    return true ;
                }
                $slozka = dir($adresar);

                while ($podslozka = $slozka->read()){
                    if (is_dir("$adresar/$podslozka") && $podslozka!='.' && $podslozka!='..' ){
                        if (nactiTriduZAdresare($trida, "$adresar/$podslozka")){
                            return true ;
                        }
                    }

                }
                return false ;

            }
            spl_autoload_register("nactiTridu");
        ?>
 
Odpovědět
23.7.2021 17:58
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 10 zpráv z 41.