abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | Nová verze

    Po roce vývoje od vydání verze 1.24.0 byla vydána nová stabilní verze 1.26.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.26.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Nová verze

    Byla vydána nová verze 6.2 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.14.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána nová verze 30.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí JavaScriptu, HTML a CSS Electron (Wikipedie, GitHub). Chromium bylo aktualizováno na verzi 124.0.6367.49, V8 na verzi 12.4 a Node.js na verzi 20.11.1. Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

    Ladislav Hagara | Komentářů: 1
    dnes 04:11 | Nová verze

    Byla vydána nová verze 9.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 220 vývojářů. Provedeno bylo více než 2 700 commitů. Přehled úprav a nových vlastností v seznamu změn.

    Ladislav Hagara | Komentářů: 0
    včera 23:22 | IT novinky

    Evropský parlament dnes přijal směrnici týkající se tzv. práva spotřebitele na opravu. Poslanci ji podpořili 584 hlasy (3 bylo proti a 14 se zdrželo hlasování). Směrnice ujasňuje povinnosti výrobců opravovat zboží a motivovat spotřebitele k tomu, aby si výrobky nechávali opravit a prodloužili tak jejich životnost.

    Ladislav Hagara | Komentářů: 4
    včera 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 18
    včera 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 26
    včera 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 715 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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: 266×
    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.