Diskuze: Chyba s triedou na uľahčenie práce s $_GET

PHP PHP Chyba s triedou na uľahčenie práce s $_GET American English version English version

Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

hey hou! nastala niekde chyba, a je potrebujem rýchlu radu keďže ja problém nikde nevidím

Fatal error: Constructor Get::get() cannot be static in /home/matusko/PhpstormProjects/triedic/application/app/helper/Get.php on line 71

v projekte mám triedu Get na jednoduchšiu prácu s poľom $_GET, prikladám časť kňodu

public static function get($name){
    if (self::exists($name)){
        return trim($_GET[$name]);
    }
    // return null;
    return "";
}

public static function exists($name){
    if (array_key_exists($name, $_GET)){
        return true;
    }
    return false;
}

a kod programu ktorý v tomto momente s triediu pracuje

// ak bol pridaný parameter na zmenu zoradenia...
if (Get::exists("order")) {

    // ... zmeň nastavenie ...
    switch (Get::get("order")){
        case "id":
            Session::set("order", "id");
            break;
        case "kategoria":
            Session::set("order", "kategoria");
            break;
        case "nazov":
            Session::set("order", "nazov");
            break;
        case "dokument":
            Session::set("order", "dokument");
            break;
        default:
            Session::set("order", "id");
            $this->setWarning("Tak takto to zoradiť neviem, bude to teda podľa ID.");
            break;
    }

    // ... a presmeruj :)
    $this->redirect("/zoznam");
}

Teraz fakt neviem či je problém to pomenovanie Get::get(), alebo som niekde urobil chybku, ale žiadnu nikde fakt nevidím, a to už nad tým dumám dobrú hodinu :D
Podobných tried mám aj na Session, aj na Post, DB, Feedback, Captchu..... len aby som si trochu uľahčil prácu pri miniprojektíkoch ktoré si po večeroch robím, a nikde, NIKDE som sa s niečim podobným nestretol :/

Odpovědět 10.4.2015 20:41
obsah kocky = r^2 ... a preto vlak drnká
Avatar
shaman
Člen
Avatar
Odpovídá na Matúš Petrofčík
shaman:

Nazov metody mas rovnaky ako nazov triedy. Je to povazovane za konstruktor a preto ta chyba. Najrychlejsi fix bude asi premenovat triedu alebo metodu.

Alebo mozes odstranit static, kedze kontruktor nemoze byt static, ale to asi nechces v tomto pripade.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 10.4.2015 21:07
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
shaman
Člen
Avatar
Odpovídá na Matúš Petrofčík
shaman:

je to vlastne pozostatok z PHP4 aby to bolo spatne kompatibilne, preto sa to dnes uz velmi neuvadza alebo je to okrajova vec s ktorou sa stretnes len vynimocne. V PHP5 je konstruktor uz vzdy len __construct. Este by ma zaujimalo ci na jesen v novom PHP7 budu taketo veci este podporovane.

Nahoru Odpovědět 10.4.2015 21:09
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na shaman
Matúš Petrofčík:

No toto je php 5.6.x a dosť ma to prekvapilo :) dúfam že takáto hnusobnosť nebude v php 7, dávam ti riešenie :P

Nahoru Odpovědět  +1 10.4.2015 21:13
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na shaman
Matúš Petrofčík:

Aby som zas nehejtoval, dá sa to nejako využiť ako + ? :)

Nahoru Odpovědět 10.4.2015 21:18
obsah kocky = r^2 ... a preto vlak drnká
Avatar
shaman
Člen
Avatar
Odpovídá na Matúš Petrofčík
shaman:

+? Asi nie velmi, skor to sposobuje chyby, vid na vrchu :)

Zaujimavy by bol pripad ze by si mal 2 konstruktory, tvoj get() a novy __construct(). Ale v takom pripade by sa vykonal len __construct()

Nahoru Odpovědět 10.4.2015 21:26
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
shaman
Člen
Avatar
Odpovídá na Matúš Petrofčík
shaman:

Prave som pozeral co bude nove v php7 a tento problem ta uz coskoro nebude trapit. https://wiki.php.net/…constructors

Nahoru Odpovědět  +1 21.4.2015 12:12
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
mkub
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
mkub:

a takisto by som triedu,ako ani metodu a ani funkciu nenazyval podla klucovych slov daneho jazyka,lebo mozu vznikat rozne nezrovnalosti medzi tvojou metodou/funkciou a klucovym slovom

 
Nahoru Odpovědět 23.4.2015 2:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.