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

Společnost Uber potvrdila bezpečnostní incident a únik dat v roce 2016. Unikly údaje o 57 milionech cestujících (jména, emailové adresy a čísla mobilních telefonů) a 600 tisících řidičích (navíc čísla řidičských průkazů).

Ladislav Hagara | Komentářů: 0
včera 23:44 | Humor

Co vypíše příkaz man půl hodiny po půlnoci? Text "gimme gimme gimme". Jedná se o virtuální velikonoční vajíčko připomínající skupinu ABBA a její hit Gimme! Gimme! Gimme! (A Man After Midnight). Problém nastane, pokud gimme gimme gimme nabourá automatizované testování softwaru. To se pak příkaz man musí opravit [Bug 1515352] [reddit].

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

Mozilla.cz informuje, že Firefox na Fedoře podporuje Client Side Decorations. Firefox na Linuxu se vykresluje včetně standardního záhlaví okna, které je v případě webového prohlížeče většinou nadbytečné a ubírá drahocenné vertikální místo na obrazovce. Verze distribuovaná uživatelům Fedory však nyní obsahuje experimentální podporu pro takzvané Client Side Decorations, které umožňují vykreslování „oušek“ panelů do záhlaví okna.

Ladislav Hagara | Komentářů: 9
včera 05:00 | Bezpečnostní upozornění

Maxim Goryachy a Mark Ermolov ze společnosti Positive Technologies budou mít v prosinci na konferenci Black Hat Europe 2017 přednášku s názvem "Jak se nabourat do vypnutého počítače, a nebo jak v Intel Management Engine spustit vlastní nepodepsaný kód". O nalezeném bezpečnostním problému informovali společnost Intel. Ta bezpečnostní problém INTEL-SA-00086 v Intel Management Engine (ME), Intel Server Platform Services (SPS) a Intel

… více »
Ladislav Hagara | Komentářů: 28
včera 01:33 | Zajímavý projekt

Na Humble Bundle byla spuštěna akce Humble Book Bundle: Java. Za 1 dolar a více lze koupit 5 elektronických knih, za 8 dolarů a více 10 elektronických knih a za 15 dolarů a více 15 elektronických knih věnovaných programovacímu jazyku Java od nakladatelství O'Reilly. Peníze lze libovolně rozdělit mezi nakladatelství O'Reilly, neziskovou organizaci Code for America a Humble Bundle.

Ladislav Hagara | Komentářů: 0
včera 00:11 | Zajímavý projekt

Článek na OMG! Ubuntu! představuje rodinu písma IBM Plex. Jedná se o open source písmo (GitHub) navržené a uvolněné společností IBM (YouTube, Carbon Design System). Ukázka na Font Squirrel.

Ladislav Hagara | Komentářů: 11
20.11. 23:22 | Komunita

Na Humble Bundle lze získat počítačovou hru Brütal Legend (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí ve středu v 19:00.

Ladislav Hagara | Komentářů: 0
20.11. 06:00 | Zajímavý článek

USA Network vysílá již třetí sérii seriálu Mr. Robot (Wikipedie, ČSFD.cz). Ryan Kazanciyan, technický konzultant seriálu, se na Medium v sérii článků Mr. Robot Disassembled věnuje jednotlivým dílům a popisuje použité nástroje a postupy.

Ladislav Hagara | Komentářů: 2
19.11. 23:55 | IT novinky

Společnost StartCom oficiálně oznámila, že jako certifikační autorita končí. Od 1. ledna 2018 přestane vydávat nové certifikáty a následující 2 roky bude poskytovat OCSP a CRL. Počátkem roku 2020 budou všechny platné certifikáty zneplatněny.

Ladislav Hagara | Komentářů: 54
19.11. 22:00 | IT novinky

Hodnota Bitcoinu, decentralizované kryptoměny, překonala hranici 8 000 dolarů [reddit].

Ladislav Hagara | Komentářů: 5
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (1%)
 (1%)
 (1%)
 (74%)
 (14%)
Celkem 740 hlasů
 Komentářů: 37, poslední včera 15:21
    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: 660×
    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.