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 04:44 | IT novinky

    U příležitosti 30. výročí vydání počítačové hry Quake byla vydána nová epizoda s názvem Dawn of the Machine (Steam).

    Ladislav Hagara | Komentářů: 4
    7.8. 16:00 | Bezpečnostní upozornění

    Vládní CERT upozorňuje (𝕏) na sérii bezpečnostních záplat (CVSS 9.9) v produktech Cisco řešících kritické zranitelnosti umožňující obejití autentizace, eskalaci oprávnění, vzdálené spuštění kódu a odepření služby. Úspěšné zneužití může útočníkům umožnit získat neoprávněný přístup k dotčeným systémům, kompromitovat zařízení Cisco Catalyst SD-WAN a Cisco IOS XE, spustit libovolný kód, zpřístupnit citlivé informace nebo narušit dostupnost postižených systémů.

    Ladislav Hagara | Komentářů: 3
    7.8. 15:33 | IT novinky

    Soud v americkém státě Nové Mexiko ve čtvrtek nařídil internetové společnosti Meta Platforms zaplatit 567 milionů dolarů (téměř 12 miliard Kč) za újmy, které její platformy působí mladým lidem. S přihlédnutím k dřívějšímu verdiktu tak má společnost celkem zaplatit 942 milionů dolarů, což je malý zlomek jejího ročního výnosu, který loni činil 60 miliard dolarů. Čtvrteční verdikt firmě také nařizuje, aby změnila způsob, jakým její

    … více »
    Ladislav Hagara | Komentářů: 13
    7.8. 12:44 | Humor

    Mark Russinovich (CTO v Microsoft Azure) se na LinkedIn pochlubil svým projektem MS Paint Doom napsaným pomocí Claude. Hru Doom umožňuje hrát v programu Malování (Microsoft Paint). Malování funguje jako monitor. Herní engine (ViZDoom) běží na pozadí a každý vykreslený snímek hry vkládá automaticky přes schránku (clipboard) do Malování.

    Ladislav Hagara | Komentářů: 3
    6.8. 08:00 | IT novinky

    Platformy ChatGPT i Roblox by mohly být zařazeny na seznam mimořádně velkých on-line platforem nebo internetových vyhledávačů, na něž se vztahují zvláštní podmínky podle nařízení o digitálních službách (DSA). Vzhledem k tomu, že ChatGPT i Roblox oznámily počet uživatelů nad prahovou hodnotou DSA, je toto označení „rozhodně možné“ a mohlo by „přijít dříve či později“. On-line platformy a vyhledávače zařazené na seznamy DSA musejí

    … více »
    Ladislav Hagara | Komentářů: 12
    5.8. 17:00 | Zajímavý software

    Společnost Cloudflare představila Cloudflare OS (GitHub), tj. open source platformu navrženou pro integraci umělé inteligence (agentů) přímo do pracovních procesů organizací.

    Ladislav Hagara | Komentářů: 0
    5.8. 12:44 | Nová verze

    Byla vydána nová verze 5.13 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Vedle zdrojových kódů je k dispozici také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

    Ladislav Hagara | Komentářů: 0
    4.8. 20:44 | Zajímavý článek

    Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    4.8. 20:11 | Komunita

    Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost NVIDIA.

    Ladislav Hagara | Komentářů: 0
    4.8. 12:22 | Zajímavý software

    Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.

    Ladislav Hagara | Komentářů: 11
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2354 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: PHP funkce - Jak dostat proměnnou mimo funkci

    14.2.2012 14:09 Marek
    PHP funkce - Jak dostat proměnnou mimo funkci
    Přečteno: 1170×
    Ahoj, chtěl bych se zeptat, jak bych mohl dostat z funkce proměnnou $moje_prom která je vnořená uvnitř. Abych ji mohl otestovat mimo fukci jestli existuje. Funkci volat znova nechci :-( Zkoušel jsem i global $moje_prom; ale mimo ji nevidím a var_dup() vrací NULL;
    Příklad:
    function test(){
     if($foo){
      # kod
       if($foo){
        # kod
         }else{
         $moje_prom = true;
          }
     }else{
      # kod
     }
    }
    Děkuji za pomoc

    Odpovědi

    14.2.2012 15:05 Kit
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    global $moje_prom při správném použití normálně funguje, ale stejně je tento přístup nějaký divný. Normálně totiž nikdo obsah proměnné z nějaké funkce nepotřebuje.

    Použij raději objekty, tam to jde poměrně jednoduše a elegantně, pokud tu proměnnou označíš jako public.
    14.2.2012 16:30 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    global $moje_prom funguje obráceně, než je asi myšleno :-)

    Příklad:
    $moje_prom = false;
    function test(){
     global $moje_prom;
     if(true){
       if(false){
         }else{
            $moje_prom = true; //toto není lokální proměnná, ale zpřístupněná globální 
          }
     }else{
     }
    }
    //tady $moje_prom dostupná, bo je definována ve vnějším contextu, a fce test() s ní jen manipuluje
    var_dump($moje_prom); 
    test();
    var_dump($moje_prom); 
    
    Ale jinak ano s global bych šetřil, až bych na to zapomněl :-).
    Proceduální styl umožňuje předat parametr odkazem (chcete-li referenci…)
    $moje_prom = false;
    function test(&$moje_prom){
     if(true){
       if(false){
         }else{
            $moje_prom = true; 
          }
     }else{
     }
    }
    var_dump($moje_prom); 
    test($moje_prom);
    var_dump($moje_prom); 
    
    …ale objektový model by mi byl bližší…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    14.2.2012 16:44 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    $moje_prom je definována v bloku else a mimo funkci, nebo ani ve vlastní fci, pokud se tento blok else neprovede, neexistuje. (nebo přesněji, není dostupná a nemusí ani existovat…).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Tarmaq avatar 15.2.2012 12:53 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    globalnim promennym bych se spise vyhnul.. je to peklo a tezky se v tom pak orientovat.

    Ja bych to vracel, pokud potebujes vracet neco jineho, je jeste moznost predat te funkci promennou jako referenci. Tedy:
    function test(&$moje_prom) {
      ...
      $moje_prom = true;
      ...
      return 'blabla';
    }
    $moje_prom = false;
    test($moje_prom);
    
    Don't panic!
    15.2.2012 17:49 Kit
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Referencím bych se také vyhnul, je to podobné peklo jako globální proměnné. Uvedený příklad spíš vybízí k použití proměnné jako parametru příkazu return.

    Kdybychom věděli, k čemu to tazatel potřebuje, tak bychom možná našli elegantní řešení. Třeba by to vyřešila výjimka.
    15.2.2012 18:04 l4m4
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Reference nejsou podobné peklo jako globální proměnné.

    Globální proměnné jsou -- u větších programů -- problém, protože vytvářejí nelokální vazby mezi částmi kódu, a tedy zvyšují komplexitu. (U krátkých programů do stránky či dvou kódu mohou naopak kód zpřehlednit.)

    Reference per se žádný problém nejsou, v řadě jazyků se předává referencemi všechno a funguje to pěkně. Jediný problém s referencemi je syntaxe některých zvrhlých jazyků, u kterých nelze z volání funkce poznat, zda se předává referencí nebo hodnotou.
    15.2.2012 19:00 Kit
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Snažím se psát funkce tak, aby výsledek funkce byl funkcí parametrů bez postranních efektů. Modifikace proměnných předaných referencí mi do tohoto paradigmatu nezapadá.

    Je mi jasné, že v OOP se to dá dodržet jen stěží. Všeho s mírou, pravda bude někde mezi.
    Tarmaq avatar 15.2.2012 19:32 Tarmaq | skóre: 39
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Ja se vyhybam jak globalnim promennym tak taky predavani promennych referenci ze stejnych duvodu jak ty. Protoze toho ale tazatel moc nenapsal a z promenne $moje_prom je tezke soudit o co jde, poradil jsem alespon toto. Prijde mi to jako mensi zlo..
    Don't panic!
    15.2.2012 23:08 l4m4
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Ja se vyhybam jak globalnim promennym tak taky predavani promennych referenci ze stejnych duvodu jak ty.
    Představ si, že máš gigabajtová data a potřebuješ v nich něco změnit. Opravdu je chceš předávat hodnotou?
    15.2.2012 23:12 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Přesně, i když v PHP se nejedná většinou o tak velká data, ale na druhou stranou se často pracuje s dost omezenými zdroji…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    15.2.2012 23:24 Kit
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Pod pojmem "vyhýbám" si představuji "použiji jen tam, kde je to skutečně nezbytné". Proměnnou typu boolean do toho nepočítám, ta se dá skoro vždy předat hodnotou.

    Marek je evidentně začátečník, který se učí teprve základy. Tomu bych existenci globálních proměnných a předávání proměnných referencí zatajil tak dlouho, jak by to jen bylo možné. Ať se nejprve naučí programovat, na takové vychytávky má času dost.
    Josef Kufner avatar 20.2.2012 11:29 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: PHP funkce - Jak dostat proměnnou mimo funkci
    Docela rozumná možnost je obalit si test do třídy a přistupovat si pak k vlastnostem objektu. Výhodou je zapouzdření a přehlednost, i když to je maličko ukecanější.
    class Test {
      var $moje_prom = false;
      function doTest()
      {
        if (foo()) {
          $this->moje_prom = true;
        }
      }
    }
    
    $t = new Test;
    $t->doTest();
    if ($t->moje_prom) {
      // ...
    }
    
    A pokud ukecanost vadí, lze si pro pohodlnější používání vyrobit magickou satickou metodu, která vyrobí objekt s výsledky testu:
    class Test {
      // ...
      static function __callStatic()
      {
        $t = new self();
        $t->doTest();
        return $t;
      }
    }
    
    $t = Test();
    if ($t->moje_prom) {
      // ...
    }
    
    Hello world ! Segmentation fault (core dumped)

    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.