Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 8. diel - Polymorfizmus, finálne prvky a autoloader v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Odpovedá 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();
Editované 12.10.2015 9:41
 
Odpovedať
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.

 
Odpovedať
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'));
 
Odpovedať
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é :-)

 
Odpovedať
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

 
Odpovedať
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

 
Odpovedať
22.3.2021 4:39
Avatar
Odpovedá 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

 
Odpovedať
22.3.2021 4:58
Avatar
Yuriy Tretyachenko:22.3.2021 5:00

no, kdyz mne to nepusti, tak udelam podle Vas

 
Odpovedať
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ě.

 
Odpovedať
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");
        ?>
 
Odpovedať
23.7.2021 17:58
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 41.