abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:55 | Zajímavý projekt

    Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.

    Ladislav Hagara | Komentářů: 4
    11.7. 16:44 | Komunita

    Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.

    Ladislav Hagara | Komentářů: 4
    11.7. 14:55 | Humor

    McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.

    Ladislav Hagara | Komentářů: 15
    11.7. 00:11 | Nová verze

    Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    10.7. 21:00 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 4
    10.7. 15:22 | Nová verze

    Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.

    Ladislav Hagara | Komentářů: 12
    10.7. 12:55 | Bezpečnostní upozornění

    Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].

    Ladislav Hagara | Komentářů: 16
    10.7. 11:55 | Humor

    Před rokem byla streamovací služba HBO Max přejmenována na Max. Dle managementu slovo HBO v názvu nebylo důležité. Včera byl Max přejmenován zpět na HBO Max. Kolik milionů dolarů to stálo? 😂

    Ladislav Hagara | Komentářů: 16
    10.7. 02:11 | Nová verze

    Byla vydána nová major verze 8.0.0 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata (Wikipedie). Přehled novinek v oficiálním oznámení a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    10.7. 01:11 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.4. Přehled novinek s náhledy a videi v oznámení na blogu.

    Ladislav Hagara | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (27%)
     (7%)
     (3%)
     (1%)
     (1%)
     (4%)
    Celkem 391 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: Problem s výstupem z class v php

    8.8.2013 13:42 Venda
    Problem s výstupem z class v php
    Přečteno: 281×
    Ahoj, mám dvě třídy s názvy Aaa a Bbb. (Ve tříde Aaa vytvořím instanci třídy Bbb).

    Třída Aaa
    class Aaa {
      private $aaa;
      public function __construct() {
      $this->aaa = new Bbb();
     }
    
     function __toString() {
      return $this->aaa;
     }
    }
    
    Třída Bbb
    class Bbb {
      private $bbb;
      public function __construct() {
      $this->bbb = 'Výsledek';
     }
    
     function __toString() {
      return $this->bbb;
     }
    }
    Vytvořím instanci třídy Aaa ale dostanu chybu!
    echo new Aaa(); // Method Aaa::__toString() must return a string value
    Zjistil jsem, že když ve tříde Aaa opravím řádek
    $this->aaa = new Bbb();
    za
    $this->aaa .= new Bbb();
    tak to funguje. Proč tomu tak je však nedokážu nějak pochopit, vždyť nic nespojuji, tak proč tečka? Poradí někdo? Děkuji

    Odpovědi

    Tarmaq avatar 8.8.2013 13:58 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Vsak to mas v popisu chyby, metoda __toString() musi vracet string. Takze v tride Aaa predelej metodu __toString() takto:
     function __toString() {
      return strval($this->aaa);
     }
    
    Don't panic!
    8.8.2013 14:01 Venda
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Ale to není odpověď na mou otázku, pořád nevím, proč tečka ovlivňuje jestl bude výstup objekt nebo string, tohle bych potřeboval objasnit. Děkuji
    Tarmaq avatar 8.8.2013 14:19 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    ty nevis jaky je rozdil mezi operatorem = a .=? Prvni je prirazeni, druhy je zkraceny zapis concatenace stringu.
    $this->aaa .= new Bbb();
    
    by se tedy dalo zapsat take takto:
    $this->aaa = $this->aaa . new Bbb();
    
    No a pri concatenaci dochazi k prevodu na string, takze se na instanci new Bbb() zavola metoda __toString()
    Don't panic!
    8.8.2013 15:00 Venda
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Jenže já v $this->aaa nic jiného krom výsledku ze třídy Bbb() nemám, tudíž nerozumím proč mám spojovat prázdný řetězec, kdyby $this->aaa obsahovala ještě nějaká data ve své třídě new Aaa() tak to chápu ale takto ne. Díky
    Tarmaq avatar 8.8.2013 15:39 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Co to je "vysledek z tridy"? V $this->aaa nemas zadny vysledek, mas tam instanci tridy Bbb. Metoda __toString() se vola jen v pripade, ze je potreba z te instance udelat string.
    Don't panic!
    8.8.2013 15:56 axel
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Co dela tecka si objasni v libovolnem tutorialu PHP. Metodou nekam napisu treba tecku a uvidim, jestli mi to nahodou nezacne "fungovat", se nikam nedostanes. Kdyz das do promenne instanci tridy, je v ni instance tridy. Kdyz tam das string (napr. ziskany volanim __toString na instanci), je tam string. To je zcela elementarni a pokud to nechapes, opet se vrat k libovolnemu tutorialu PHP.
    8.8.2013 15:54 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php

    Musíš nějak vynutit konverzi na řetězec a pomocí .= jsi provedl $this->aaa = $this->aaa . new Bbb();.

    Já mám otázku: »Co vás lidi, tedy fčul Tebe, prosím Tě vede k tomu to používat takto (používat __toString())?«
    To se musí někde líhnout tyto nápady a musí to mít nějaký důvod :).

    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.8.2013 17:06 Venda
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Když __toString() nepoužiju, tak jak dostanu výsledek co vytvoří ta class?

    Příklad
    class Aaa {
      private $aaa;
      public function __construct() {
      $this->aaa = false;
      $this->aaa .= '<ul>';
      $this->aaa .= '<li>aaa</li>';
      $this->aaa .= '<li>bbb</li>';
      $this->aaa .= '<li>ccc</li>';
      $this->aaa .= '</ul>';
     }
    }
    
    $aaa = new Aaa();

    echo $aaa;
    8.8.2013 17:22 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php

    A k čemu je taková třída?

    Dobře, bude to „výkonná“ třída:

    <?php
    class Aaa {
      static public function getListStatic() {
        $o  = '
      '; $o .= '
    • aaa
    • '; $o .= '
    • bbb
    • '; $o .= '
    • ccc
    • '; $o .= '
    '; return $o; } public function getList() { $o = '
      '; $o .= '
    • aaa
    • '; $o .= '
    • bbb
    • '; $o .= '
    • ccc
    • '; $o .= '
    '; return $o; } }; echo Aaa::getListStatic(),"
    \n"; $o = new Aaa(); echo $o->getList(),"
    \n";

    PS: Neplatanl bych bool a string jen tak bezdůvodně…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    8.8.2013 17:26 Venda
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Tohle je mi jasný, ale jak to udělám s použitím __constructor() ? Díky
    Tarmaq avatar 8.8.2013 17:41 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    class Aaa
    {
      private $o;
      public function __construct()
      {
        $this->o  = '
      '; $this->o .= '
    • aaa
    • '; $this->o .= '
    • bbb
    • '; $this->o .= '
    • ccc
    • '; $this->o .= '
    '; } public function getList() { return $this->o; } }; $o = new Aaa(); echo $o->getList(),"
    \n";
    U staticke varianty se konstruktor nevola, konstruktor se vola pri instanciaci..
    Don't panic!
    8.8.2013 17:47 Venda
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    Ale zase musím volat metodu, proto jsem tam dal __toString() a nemusím už nic volat, vytvořim instanci v proměnné $o a zrovna v ní mám zpracované data z class.
    $o = new Aaa();
    echo $o; 
    # Výsledek
    aaa
    bbb
    ccc
    
    
    Tarmaq avatar 8.8.2013 17:56 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    No a kde je teda problem? Tohle ti nestaci?
    Don't panic!
    8.8.2013 18:23 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Problem s výstupem z class v php
    PS: Stejně se metoda volá, nic jsi neušetřil, jen si to komplikuješ….
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.