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 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

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

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 10
    včera 21:11 | Zajímavý článek

    V lednu byl otevřen editor kódů Zed od autorů editoru Atom a Tree-sitter. Tenkrát běžel pouze na macOS. Byl napevno svázán s Metalem. Situace se ale postupně mění. V aktuálním příspěvku Kdy Zed na Linuxu? na blogu Zedu vývojáři popisují aktuální stav. Blíží se alfa verze.

    Ladislav Hagara | Komentářů: 23
    včera 14:33 | Pozvánky

    O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    8.5. 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 19
    8.5. 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 6
    8.5. 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    7.5. 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 6
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (8%)
     (14%)
     (16%)
    Celkem 152 hlasů
     Komentářů: 11, poslední dnes 18:00
    Rozcestník

    Dotaz: volání metody v jiné třídě

    11.1.2016 12:59 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    volání metody v jiné třídě
    Přečteno: 328×
    Dobrý den

    řeším takový problémek, snad ho popíšu srozumitelně ..

    mám dvě nazávislé třídy, jedna definuje (modifikuje) chování druhé pro pozdejsi pouziti ...
    class vytvor {
    
      function __constructor( funkce ){
        this->_funkce = funkce;
      }
    
      function udelej(a){
        return $this->funkce( a );
      }
    }
    
    
    class poroucej {
      
      function na_druhou(a){
        return a*a;
      }
    
      function zaloz( $funkce ) {
        this->robot = new vytvor( $this->{$funkce} );
      }
    
      function zpracuj( array $data ){
        foreach( $data as $udaj ){
          $this->robot->udelej( $udaj );
        }
      }
    }
    
    $udaje = array( 2, 5, 30, 25 );
    $hlavni= new poroucej( "na_druhou" );
    echo $hlavni->zpracuj( $udaje );
    
    je to jen nástin, snad pochopitelny ... jde mi o to, zda lze předat funkci ( nebo tady metodu ) jako parametr, která se de fakto stane metodou jiné třídy.

    předem díky ..

    Řešení dotazu:


    Odpovědi

    11.1.2016 13:39 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: volání metody v jiné třídě
    Teď si uvědomuji, že ten nadpis je nepřesný .. jde o předání odkazu na metodu v jiné třídě
    11.1.2016 14:22 Radek
    Rozbalit Rozbalit vše Re: volání metody v jiné třídě
    skus hleada "pointer to function php"

    http://stackoverflow.com/questions/6475136/pass-a-function-by-reference-in-php
    http://stackoverflow.com/questions/12690820/how-to-pass-a-pointer-to-a-function-and-its-parameters-in-php

    function doIt ($fn) {
    echo "doIt\n";
    return $fn();
    }

    function doMe () {
    echo "doMe\n";
    }

    // I am using a closure here.
    // There may be a more clever way to "get the function-object" representing a given
    // named function, but I do not know what it is. Again, I *don't use PHP* :-) (nepoužívá PHP)
    echo doIt(function () { doMe(); });

    Kód je okopírován z jednoho odkazu výše

    Princip je jednoduchý funkce je uložená někde v pamětí, tedy je uložená na nějaké adrese. Tuto adresu si ulož do proměnné, a následně tuto proměnou můžeš volat jako funkci. (pokud má proměnná správný typ). (pro přetypování hledej retyping php)
    11.1.2016 14:27 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: volání metody v jiné třídě
    správně by mělo být echo doIt( 'doMe' };

    mně šlo ale o předání 'pointeru' na metodu v objektu .. viz níže ..

    každopádně děkuji za snahu
    Řešení 1× (Milan Uhrák (tazatel))
    11.1.2016 14:22 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: volání metody v jiné třídě
    Tak nic, když jsem správně pojmenoval problém, našel jsem i řešení

    volání má být this->robot = new vytvor( array($this, $funkce} );

    a udelej musi byt ošetřeno
      function udelej(a){
        $funkce = $this->$funkce;
        return $funkce[0]->$funkce[1]( a );
      }
    
    plus nějaké to odchycení chyb ..

    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.