NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Matúš Petrofčík:10.4.2015 20:41

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:10.4.2015 21:07

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í
+2,50 Kč
Ř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:10.4.2015 21:09

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
Odpovídá na shaman
Matúš Petrofčík:10.4.2015 21:13

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
10.4.2015 21:13
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na shaman
Matúš Petrofčík:10.4.2015 21:18

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:10.4.2015 21:26

+? 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:21.4.2015 12:12

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
21.4.2015 12:12
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
mkub:23.4.2015 2:26

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.