NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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í.
Funkce, kterou se snažíš použít je dostupná pouze pro registrované uživatele. Buďto se přihlas nebo si zdarma vytvoř nový účet.

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
Marek Šafránek:13.1.2015 18:34

Ahoj, jsem v bodě přepsání metody a nefunguje mi ručně opsaný kód

foreach ($lide as $clovek)
{
$clovek–>pozdrav();
echo('<br />');
}

ale, když do index.php vložím stejný kód zkopírovaný z tohoto tutoriálu, tak funguje / koukám jak blázen, nevidím, kde je rozdíl. Díky

Editováno 13.1.2015 18:35
Odpovědět
13.1.2015 18:34
Stojí-li něco za námahu, je třeba to udělat pořádně...
Avatar
Odpovídá na Marek Šafránek
Marek Šafránek:13.1.2015 18:45

Vyřešila to výměna pomlčky v šipce za znaménko minus(-) , aha :D

Editováno 13.1.2015 18:46
Odpovědět
13.1.2015 18:45
Stojí-li něco za námahu, je třeba to udělat pořádně...
Avatar
hocikto19
Člen
Avatar
hocikto19:28.6.2015 14:57
function nactiTridu($trida)
 {
         require_once("tridy/$trida.php");
 }

ako to riešiť, keď chcem mať classy pobalíčkované vo viac zložkách?

Odpovědět
28.6.2015 14:57
Multum in parvo.
Avatar
Odpovídá na hocikto19
Neaktivní uživatel:28.6.2015 15:08

Často se to řeší jmennými prostory. Třída se pak jmenuje třeba Model\User a includuje se soubor tridy/Model/U­ser.php :)

Odpovědět
28.6.2015 15:08
Neaktivní uživatelský účet
Avatar
alfonz
Člen
Avatar
Odpovídá na hocikto19
alfonz:28.6.2015 15:19

Toto se řeší pomocí tzv. Jmených prostorů neboli anglicky namespace. Každá třída je v jakémsi balíčku souvisejících tříd a tak by měla být pak i uložena, takže například třída Malíř ve jmeném prostoru Povolání(Povo­lani\Malir) by se měla na cházet v souboru Malir ve složce Povolani. Více o jmených prostorech by mělo být v 25. díle :)

Edit: Inoue Yūki byl rychlejší :D

Editováno 28.6.2015 15:19
Odpovědět
28.6.2015 15:19
lmao
Avatar
Vít Cigánek:11.10.2015 21:55
function nactiTridu($trida)
{
        require("tridy/$trida.php");
}


spl_autoload_register("nactiTridu");

Tenhle kod mi nefunguje a nevim proč. Ma někdo nějaký nápad. :(

 
Odpovědět
11.10.2015 21:55
Avatar
Odpovídá na Vít Cigánek
Martin Konečný (pavelco1998):11.10.2015 22:08

OK, pro ujasnění, abychom se nemuseli jak tupci při každé otázce ptát "co na tom nefunguje?":
Když ti něco nefunguje, napiš, co přesně nefunguje (hází to tuhle a tuhle chybu / dělá to něco jiného, než by mělo / ...). V nejlepším případě sem hoď celý script, který máš.

Tak se ještě zeptám - co přesně ti na tom nefunguje?

Odpovědět
11.10.2015 22:08
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Vít Cigánek:11.10.2015 22:15

Momentálně dvě věci. Pole ze stranky: http://www.itnetwork.cz/…-datove-typy tam jsem psal zdrojaky a nově

function myAutoloader($className)
{
    $path = 'tridy/';

    include $path.$className.'.php';
}

spl_autoload_register('myAutoloader');


         function nactiTridu($trida)
        {
            require("tridy/$trida.php");
        }

        spl_autoload_register("nactiTridu");




function my_autoloader($class)

{
include 'tridy/' . $class . '.php';
}

spl_autoload_register('my_autoloader');

Ani jeden ze způsobu nefunguje. :( Tak nevim jestli nemam něco nastavné blbě. Nevím kde se mam podívat do logů. Server mi instaloval kamarad a ja se pod linuxem moc nevyznam.

 
Odpovědět
11.10.2015 22:15
Avatar
Odpovídá na Vít Cigánek
Martin Konečný (pavelco1998):11.10.2015 22:19

V tom případě záleží, kde máš ty soubory se třídami.

Např. pokud budeš mít strukturu

index.php
tridy/Trida.php
tridy/Trida2.php
tridy/Trida3.php

tak v souboru index.php budeš mít

function myAutoloader($class)
{
        include "tridy/" . $class . ".php";
}

spl_autoload_register("myAutoloader");


$trida = new Trida();   // načte soubor  tridy/Trida.php
$trida2 = new Trida2();   // načte soubor tridy/Trida2.php

Zkus to nějak takto

Odpovědět
11.10.2015 22:19
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Vít Cigánek:12.10.2015 9:00
function myAutoloader($class)
{
        include "tridy/" . $class . ".php";
}

spl_autoload_register("myAutoloader");


$trida = new Trida();   // načte soubor  tridy/Trida.php
$trida2 = new Trida2();   // načte soubor tridy/Trida2.php

Tak ani tohle mi nefunguje a ani tohle

<?php

require_once('tridy/pole.php');

echo '<br />';
echo '<br />';
$pole1 = new Pole([1,2,3,4,5,6]);
$pole1->zobraz();

 ?>

a třída:

class Pole
{
    /** @var array */
    private $prvky;


    public function __construct(array $prvky) // pokud to má být pouze pole, lze uvést před argumentem hint
    {
        $this->prvky = $prvky;
    }


    public function pridej($prvek)
       {
        $this->prvky[] = $prvek;
       }

    public function zobraz()
       {
       printf_r($prvky);
       }
    }

funguje mi pouze tohle

class Foo
{
    private $data = array();

    public function __construct(array $data)
    {
        $this->data = $data;
    }

    public function __get($vlastnost)
    {
        return $this->data[$vlastnost];
    }
}

$foo = new Foo(array("bar" => "baz"));
echo $foo->bar; // vypíše baz

Ja si myslím, že musím mít něco špatně nastavené v php.ini nebo tak... V obou nefunkčních případech mi vyjede prazdna stranka bez chyboveho hlašení. Prostě jenom bílo. A nevím kde se mam podívat do logu, co po mě to phpko vlastně chce a proč to nezobrazuje.

 
Odpovědět
12.10.2015 9:00
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.