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í
×
dnes 12:33 | Nová verze

Byla vydána nová stabilní verze 1.8 (1.8.770.50) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují vylepšenou historii prohlížení. Ukázka na YouTube. Chromium bylo aktualizováno na verzi 57.0.2987.111.

Ladislav Hagara | Komentářů: 0
dnes 05:55 | Zajímavý projekt

Google na svém blogu věnovaném open source představil portál Google Open Source informující mimo jiné o více než 2000 open source projektech vyvíjených nebo používaných v Googlu.

Ladislav Hagara | Komentářů: 0
dnes 03:33 | IT novinky

Pro společnost Red Hat skončil 28. února fiskální rok 2017. Dle finančních výsledků bylo čtvrté čtvrtletí, stejně jako celý fiskální rok 2017, opět úspěšné. Tržby jsou zvyšovány již 60 čtvrtletí v řadě. Za čtvrté čtvrtletí 2017 to bylo 629 milionů dolarů, tj. meziroční nárůst 16 %. Tržby za celý fiskální rok činily 2,4 miliardy dolarů, tj. meziroční nárůst 18 %.

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

V balíčku eject, příkaz pro vysunutí CD/DVD z mechaniky, v linuxových distribucích Ubuntu (USN-3246-1) a Debian (#858872) byla nalezena bezpečnostní chyba CVE-2017-6964 zneužitelná k lokální eskalaci práv. Linuxové distribuce používající eject z balíčku util-linux nejsou zranitelné.

Ladislav Hagara | Komentářů: 14
včera 05:55 | Komunita

Dries Buytaert, autor a vedoucí projektu Drupal a prezident Drupal Association, požádal soukromě před několika týdny Larryho Garfielda, jednoho z klíčových vývojářů Drupalu, aby projekt Drupal opustil. Larry Garfield minulý týden na svých stránkách napsal, že důvodem jsou jeho BDSM praktiky a rozpoutal tím bouřlivou diskusi. Na druhý den reagoval Dries Buytaert i Drupal Association. Pokračuje Larry Garfield [reddit].

Ladislav Hagara | Komentářů: 55
včera 04:44 | Humor

Společnost SAS zveřejnila na svých stránkách studii s názvem Open Source vs Proprietary: What organisations need to know (pdf). Organizace by měly například vědět, že ideální je mix 40 % open source softwaru a 60 % proprietárního softwaru [Slashdot].

Ladislav Hagara | Komentářů: 12
27.3. 23:33 | Zajímavý software

Byl vydán ShellCheck ve verzi 0.4.6. Jedná se o nástroj pro statickou analýzu shellových skriptů. Shellové skripty lze analyzovat na webové stránce ShellChecku, v terminálu nebo přímo z textových editorů. Příklady kódů, na které analýza upozorňuje a doporučuje je přepsat. ShellCheck je naprogramován v programovacím jazyce Haskell. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.

Ladislav Hagara | Komentářů: 0
27.3. 23:33 | Pozvánky

Czech JBoss User Group zve na setkání JBUG v Brně, které se koná ve středu 5. dubna 2017 v prostorách Fakulty informatiky Masarykovy univerzity v místnosti A318 od 18:00. Přednáší Pavol Loffay na téma Distributed Tracing and OpenTracing in Microservice Architecture.

… více »
mjedlick | Komentářů: 0
27.3. 11:33 | Zajímavý článek

Národní centrum kybernetické bezpečnosti (NCKB) vypracovalo (pdf) 26 podrobných bezpečnostních doporučení pro síťové správce. Tato doporučení jsou nastavena tak, aby je bylo možné aplikovat v každé instituci. Jsou rozdělena na tři základní části: bezpečnost infrastruktury, bezpečnost stanic a serverů a bezpečnost uživatelů.

Ladislav Hagara | Komentářů: 17
27.3. 05:55 | Komunita

Prezident Nadace pro svobodný software (FSF) Richard M. Stallman vyhlásil na slavnostním ceremoniálu v rámci konference LibrePlanet 2017 vítěze Free Software Awards za rok 2016. Ocenění za společenský přínos získal SecureDrop (Wikipedie). Za rozvoj svobodného softwaru byl oceněn Alexandre Oliva (Wikipedie).

Ladislav Hagara | Komentářů: 0
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (14%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 961 hlasů
 Komentářů: 72, poslední 1.3. 11:16
    Rozcestník

    Dotaz: Jak vypsat prom. pomocí class v php

    8.4.2012 13:30 Berka
    Jak vypsat prom. pomocí class v php
    Přečteno: 659×
    Ahoj, mám tyto tři sobory php a potřebuji vypsat v souboru index.php proměnné ze souboru inc.php pomocí třídy uložené v souboru class.php. Neporadí někdo? Díky
    soubor inc.php
    $cont = false;
    $cont .= 'Nějaký text';
    $cont .= 'Nějaký jiný text';
    
    soubor class.php
    class sel{
    public function __construct(){
    include_once(ABSPATH.'/inc.php');
    }
    }
    
    soubor index.php
    include_once(ABSPATH.'/class.php');
    $cont = new sel();
    echo $cont;

    Odpovědi

    8.4.2012 13:47 Kit
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Máš to hodně nešikovně napsáno, skoro bych řekl, že se s tím nedá nic rozumného dělat. Můžeš tam sice přidat metodu __toString(), ale jeví se mi to jako cesta do pekel.
    function __toString() {
      include_once(ABSPATH.'/inc.php');
      return $cont;
    }
    Fungovat by to mělo, ale je to celé hrozně nepřehledné. Opravdu to nemůžeš napsat pořádně?
    8.4.2012 13:50 Berka
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Opravdu to nemůžeš napsat pořádně?
    Díky, určitě můžu, a poradíš jak to myslíš?
    8.4.2012 13:59 Kit
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Například tak, že inc.php bude součástí class.php nebo bude jeho rodičem. A napiš si autoloader, ať se z těch includů neosypeš.
    8.4.2012 14:10 Berka
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Součástí class nemuže být, jelikož těch souborů je spousta, ale jako rodič by byt urcite mohlo, ovšem je otázka jak to přesně myslíš, můžeš názornou ukázku? Díky
    8.4.2012 14:40 Kit
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Jakých souborů je spousta? Začínám mít tušení, že něco děláš od základů špatně a že ti takovým způsobem moc nepomohu. Nemůžeš sem napsat, o co konkrétně se snažíš?

    S tím rodičem by to mohlo vypadat např. takto:
    //soubor inc.php
    class inc{
      protected $cont;
      public function __construct(){
        $this->cont = false;
        $this->cont .= 'Nějaký text';
        $this->cont .= 'Nějaký jiný text';
      }
    }
    //soubor sel.php
    class sel extends inc{
      public function __toString(){
        return $this->cont;
      }
    }
    //soubor index.php
    function __autoload($class){
      include(ABSPATH.'/'.$class.'.php');
    }
    $cont = new sel();
    echo $cont;
    8.4.2012 15:23 Berka
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Jakých souborů je spousta?
    Souborů inc.php, akorát mají jinou cestu..
    /novinky/inc.php
    /home/inc.php
    /kontakty/inc.php
    Nemůžeš sem napsat, o co konkrétně se snažíš?
    Snažím se pomocí class zobrazit obsah souboru dle zadané url. Pokud nekdo zadá url
    /novinky/
    
    tak se načte obsah souboru /novinky/inc.php
    /kontakty/
    
    tak se načte obsah souboru /kontakty/inc.php. atd.. Díky

    8.4.2012 15:45 Kit
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Tak takovou šílenost jsem už dlouho neviděl. Proč nepoužiješ databázi?
    8.4.2012 16:10 Berka
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Proč? No jelikož ty soubory neobsahuji pouze text ale i spoustu kodu..
    8.4.2012 16:34 Kit
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Dobrá, zkusím to tedy jinak. Ale vůbec to neodpovídá původnímu požadavku a netuším, jestli to bude fungovat. Lepší by bylo z každého modulu udělat třídu a instance vytvářet pomocí tovární metody.
    //soubor $modul/inc.php
    $this->cont = false;
    $this->cont .= 'Nějaký text';
    $this->cont .= 'Nějaký jiný text';
    //soubor sel.php
    class sel{
      private $cont;
      public function __construct($modul) {
        include(ABSPATH.'/'.$modul.'/inc.php');
      }
      public function __toString(){
        return $this->cont;
      }
    }
    //soubor index.php
    function __autoload($class){
      include(ABSPATH.'/'.$class.'.php');
    }
    $cont = new sel($modul);
    echo $cont;
    Josef Kufner avatar 8.4.2012 19:44 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak vypsat prom. pomocí class v php
    Pokud ty inc.php soubory obsahují jen data, tak z nich udělej něco parsovatelného, třeba json nebo ini a načti si je pomocí knihovní funkce (json_decode, parse_ini_file) namísto include. Je to rychlejší a lépe lze reagovat na syntaktické chyby v nich.

    Pokud tam máš kód specifický pro danou sekci webu, udělej z toho třídu, která rozšiřuje nějakou základní:
    // Společný soubor všem částem webu
    class Page {
      // ... cokoliv používáš všude
      protected $title = '(undefined)';
      protected $config = array();  // tady máš nějaké volby
    
      public function getTitle() {
        return $this->title;
      }
    
      public function setPageConfig() {
        return $this->title;
      }
    
      // tato metoda by mohla byt abstract
      public function getContent() {
        // obecna stranka proste jen zobrazi index.html
        readfile($this->config['base_dir'].'index.html');
      }
    }
    // novinky/main.php
    class Novinky extends Page {
      protected $title = "Novinky";  // getter je zděděn
      public function createContent() {
        // nacteni novinek
        $q = dibi::select('news.*, ...');
        if (isset($this->config['lang'])) {
          // pokud bylo zadano '/news/...'
          $q->where('news.Lang = %s', $this->config['lang']);
        }
        if (isset($this->config['path'][0])) {
          // pokud je url ve tvaru '/*/id'
          $q->where('news.id = %s', $this->config['path'][0]);
        }
        // ... cokoliv potřebuješ
      }
    }
    O samotné zpracování těchto tříd se pak postará index.php, na který na serveru nasměruješ úplně všecko.
    // index.php
    $path = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
    $page = isset($path[0]) ? $path[0] : '/'; // ošetření prázdné cesty (/)
    
    $page_map = array(
      '/'        => array('class' => 'Page', 'base_dir' => './home/'),
      'kontakty' => array('class' => 'Kontakty'),
      'novinky'  => array('class' => 'Novinky'),
      'news'     => array('class' => 'Novinky', 'lang' => 'en'),
    );
    
    $page_config = $page_map[$page];
    $page_config['path'] = array_slice($path, 1);
    
    $class_name = $page_config['class'];
    
    function __autoload($c) {
      include('class/'.strtolower($c).'.class.php');
         // dle tveho umisteni souboru s tridama
    }
    
    if (class_exists($class_name)) {
      $p = new $class_name();
      $p->setConfig($page_config);
      $p->createContent();
    } else {
      header("Status: 404 Not Found");
      echo 'Sorry, page not found!';
    }
    
    Ve výsledku to dopadne tak, že pokud uživatel vleze na adresu http://example.com/, tak se mu zobrazí soubor ./home/index.html a pokud na http://example.com/novinky/1, tak se mu zobrazí novinka s ID 1.

    Prostým přidáváním tříd a záznamů do pole $page_map si můžeš aplikaci dle libosti rozšiřovat a přitom se z toho nezblázníš.

    A až tě to přestane bavit, tak sáhni po nějakém pěkném frameworku.
    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.