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 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
včera 08:22 | Nová verze

Byla vydána první beta verze Ubuntu 17.04 s kódovým názvem Zesty Zapus. Ke stažení jsou obrazy Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio a Xubuntu. Dle plánu by Ubuntu 17.04 mělo vyjít 13. dubna 2017.

Ladislav Hagara | Komentářů: 9
23.2. 17:53 | Bezpečnostní upozornění

Google na svém blogu věnovaném počítačové bezpečnost informuje o nalezení "reálného" způsobu generování kolizí hašovací funkce SHA-1. Podrobnosti a zdrojové kódy budou zveřejněny do 90 dnů. Již dnes lze ale na stránce SHAttered nalézt 2 pdf soubory, jejichž obsah se liší a SHA-1 otisk je stejný (infografika).

Ladislav Hagara | Komentářů: 25
23.2. 17:51 | Nová verze

Vyšla nová verzia open source software na správu a automatizáciu cloudových datacentier Danube Cloud 2.4. Danube Cloud je riešenie postavené na SmartOS, ZFS, KVM a zónach. Obsahuje vlastnosti ako integrovaný monitoring, DNS manažment, zálohy, a samozrejme rozsiahlu dokumentáciu.

dano | Komentářů: 6
23.2. 17:46 | Pozvánky

V Plzni se 3. až 5. března 2017 uskuteční AIMTEChackathon. Je to akce pro vývojáře, grafiky, webdesignéry i veřejnost. Akci provází zajímavé přednášky IT odborníků. Více o programu a možnosti přihlášení na stránkách akce.

cuba | Komentářů: 0
23.2. 01:00 | Nová verze

Známý šifrovaný komunikátor Signal od verze 3.30.0 již nevyžaduje Google Play Services. Autoři tak po letech vyslyšeli volání komunity, která dala vzniknout Google-free forku LibreSignal (dnes již neudržovaný). Oficiální binárky jsou stále distribuované pouze přes Google Play, ale lze použít neoficiální F-Droid repozitář fdroid.eutopia.cz s nezávislými buildy Signalu nebo oficiální binárku stáhnout z Google Play i bez Google účtu

… více »
xm | Komentářů: 7
22.2. 23:14 | Nová verze

Po třech týdnech od vydání první RC verze byla vydána první stabilní verze 17.01.0 linuxové distribuce pro routery a vestavěné systémy LEDE (Linux Embedded Development Environment), forku linuxové distribuce OpenWrt. Přehled novinek v poznámkách k vydání. Dotazy v diskusním fóru.

Ladislav Hagara | Komentářů: 7
22.2. 17:28 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2017-6074 v Linuxu zneužitelné k lokální eskalaci práv. Jde o chybu v podpoře DCCP (Datagram Congestion Control Protocol). Do linuxového jádra se dostala v říjnu 2005. V upstreamu byla opravena 17. února (commit). Bezpečnostní chyba byla nalezena pomocí nástroje syzkaller [Hacker News].

Ladislav Hagara | Komentářů: 16
22.2. 15:00 | Zajímavý software

Společnost Valve vydala novou beta verzi SteamVR. Z novinek lze zdůraznit oficiální podporu Linuxu. Další informace o podpoře této platformy pro vývoj virtuální reality v Linuxu v diskusním fóru. Hlášení chyb na GitHubu.

Ladislav Hagara | Komentářů: 0
22.2. 06:00 | Nová verze

Po necelém roce od vydání verze 0.67 byla vydána verze 0.68 populárního telnet a ssh klienta PuTTY. Podrobnosti v přehledu změn. Řešeny jsou také bezpečnostní chyby.

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 704 hlasů
 Komentářů: 66, poslední 22.2. 18:57
    Rozcestník

    Dotaz: Jak dostat do třídy instanci své třídy v php

    13.10.2013 20:32 Jakub
    Jak dostat do třídy instanci své třídy v php
    Přečteno: 249×
    Když vytvořím instanci třídy 'Ovoce'
    $obj = Ovoce();
    a z té třídy volám jiné třídy které potřebují instanci třídy 'Ovoce', existuje řešení jak to udělat? Děkuji

    Odpovědi

    13.10.2013 20:46 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Ano, uvnitř třídy použiješ speciální proměnnou $this.
    13.10.2013 20:54 Jakub
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Myslel jsem to jinak, patrně jsem se špatně vyjádřil. Zkusím to lépe.

    Vytvořím instanci
    $obj = Ovoce();
    v class Ovoce zavolám jinou class Zelenina
    $obj2 = Zelenina();
    a v class Zelenina potřebuji zavolat metodu v class Ovoce.

    je to lépe k pochopení? Děkuji
    13.10.2013 21:11 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Není to sice úplně triviální, ale budiž:
    <?php
    class Ovoce {
        private $atribut;
        private $obj2;
    
        function __construct($atribut){
            $this->atribut = $atribut;
            $this->obj2 = new Zelenina($this);
        }
    
        function getAtribut(){
            return $this->atribut;
        }
    
        function __toString() {
            return "Ovoce a $this->obj2";
        }
    }
    
    class Zelenina {
        private $ovoce;
    
        function __construct(Ovoce $ovoce){
            $this->ovoce = $ovoce;
        }
    
        function __toString() {
            return "zeleniny mám: " . $this->ovoce->getAtribut() . " kusů";
        }
    
    }
    
    $obj = new Ovoce(42);
    echo $obj;
    
    Výsledek:
    Ovoce a zeleniny mám: 42 kusů
    13.10.2013 22:28 Jakub
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Tak to je na pochopení už docela mazec :-( Musím si to pořádně rozebrat.. Děkuji

    ještě tady mám úplně obyčejnou class, ze které opět nedostanu nic jiného než nadafinované proměnné na false. V každé metodě se uloží string který se ještě vypíše pokud tam vložím echo, ale v poslední metodě "show" už jsou zase všechny proměnné false, kde se to ztrácí? Děkuji
         class Test{
              private $item1 = false;
              private $item2 = false;
              private $item3 = false;
               public $show  = false;
    
              public function __construct(){
                   $this->item1();
                   $this->item2();
                   $this->item3();
              }
    
              public function item1(){
                   $this->item1 .= 'Text item1';
              }
    
              public function item2(){
                   $this->item2 .= 'Text item2';
              }
    
              public function item3(){
                   $this->item3 .= 'Text item3';
              }
    
              public function show(){
                   $this->show .= $this->item1;
                   $this->show .= $this->item2;
                   $this->show .= $this->item3;
              }
         }
    
         $test = new Test();
    
         var_dump($test->show); // bool(false)
    13.10.2013 22:43 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Kde voláš tu metodu show()? Podle mne nikde. Atributu $show zůstane původní hodnota. Kdo ti poradil, abys dělal atributy "public"? Mají být "private".

    To je tedy nápad, pojmenovávat atributy stejně jako metody. Nedivím se, že v tom máš guláš.

    A kdo ti poradil řetězit booleovskou hodnotu s řetězcem? Sice to tak nějak funguje, ale je to nesmysl.
    13.10.2013 23:16 Jakub
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Kde voláš tu metodu show()? Podle mne nikde. Atributu $show zůstane původní hodnota.
    Já jsem fakt pako :-(
    Kdo ti poradil, abys dělal atributy "public"? Mají být "private".
    Narážiš na tento zápis ?
    public $show  = false;
    Pokud ano, jak bych tu proměnnou pak vypsal?
    A kdo ti poradil řetězit booleovskou hodnotu s řetězcem? Sice to tak nějak funguje, ale je to nesmysl.
    tak jak to má být? Měl jsem za to, že když se jedná o inicializace proměnné je to fuk..
    public $show  = '';
    nebo
    public $show  = "";
    nebo úplně jinak
    
    Díky
    13.10.2013 23:21 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Nepotřebuješ obsah proměnné, ale metodu, která ti vypíše to, co potřebuješ. Proměnnou $show nepotřebuješ inicializovat, protože je úplně zbytečná. Vůbec tam nemusí být.
    13.10.2013 23:16 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Ten tvůj příklad by v reálu asi vypadal mnohem jednodušeji:
    <?php
    class Test {
        private $item1 = 'Text item1';
        private $item2 = 'Text item2';
        private $item3 = 'Text item3';
    
        public function __toString() {
            return $this->item1 . $this->item2 . $this->item1;
        }
    }
            
    $test = new Test();
    echo $test;
    
    Všechno ostatní je tam jaksi "navíc" a není příliš patrné, proč to tam máš.

    Vyhýbej se operátorům ".=" - nejsou moc efektivní a většinou ani nejsou potřebné.
    13.10.2013 23:37 Jakub
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Všechno ostatní je tam jaksi "navíc" a není příliš patrné, proč to tam máš.
    Byl to jen příklad, metody jsem tady nechtěl z důvodu přehlednosti rozvádět...

    Když si vezmu cenné ponaučení a vycházím z původního příkladu, tak ted je to OK ? Děkuji

    class Test{
              private $item1;
              private $item2;
              private $item3;
    
              public function __construct(){
                   $this->item1();
                   $this->item2();
                   $this->item3();
              }
    
              public function item1(){
                   $this->item1 = 'Text item1';
              }
    
              public function item2(){
                   $this->item2 = 'Text item2';
              }
    
              public function item3(){
                   $this->item3 = 'Text item3';
              }
    
              public function show(){
                   $this->show = $this->item1.$this->item2.$this->item1;
              }
    
              public function __toString(){
                   return show();
              }
         }
    
         $test = new Test();
    
         echo($test->show());
    13.10.2013 23:55 Kit
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Metodu __toString() tam máš navíc, protože jsi ji nepoužil. U metody show() ti chybí return. Atribut $this->show je opět zbytečný.

    Když místo posledních dvou metod budeš mít jen jednu
    public function __toString(){
       return $this->item1.$this->item2.$this->item1;
    }
    
    tak vůbec nebudeš potřebovat volat metodu show()
    $test = new Test();
    echo($test);
    
    Uvnitř objektu si udržuj atributy v atomickém stavu, ale vně objektu je prezentuj jako komplexní hotovou informaci, kterou k něčemu potřebuješ. Nesnaž se z vnějšku manipulovat s jednotlivými atributy, to je úkolem metod uvnitř objektu.
    14.10.2013 00:12 Jakub
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    Metodu __toString() tam máš navíc, protože jsi ji nepoužil.
    jak to že jsem ji nepoužil? ta metoda se zpracuje přece vždy?
    U metody show() ti chybí return.
    Ano to je pravda, to co jsem napsal je nesmysl, čili se dvěma metodama asi takto (doufám)
    public function show(){
      return $this->item1.$this->item2.$this->item1;
    }
    
    public function __toString(){
      return show();
    }
    
    Uvnitř objektu si udržuj atributy v atomickém stavu, ale vně objektu je prezentuj jako komplexní hotovou informaci, kterou k něčemu potřebuješ.
    Vůbec netuším co je to atomický stav, musím pohledat a nastudovat...
    Nesnaž se z vnějšku manipulovat s jednotlivými atributy, to je úkolem metod uvnitř objektu.
    No a tohle jde úplně mimo mne. Absolutně nerozumím co se mi snažíš poradit...
    14.10.2013 07:16 DarkKnight | skóre: 24
    Rozbalit Rozbalit vše Re: Jak dostat do třídy instanci své třídy v php
    metoda __toString() se zavola pouze v pripade, ze se pokusis vytisknout objekt (respektive kdyz ho pretypujes na string), proto ji mas zbytecnou (volas $objekt->show(), ne print $objekt)

    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.