Autor Zpráva
webik
Profil
Zdravým mám dotaz o správnosti použitia, s OOP veľké skúsenosti nemám tak potrebujem trochu usmerniť.
Mám vytvorený objekt (class Vypis()) ktorom je jednoduchá funkcia pre výpis vstupu. Predstava bola ošetriť vstup až v konštruktore, ale takto to zjavne nefunguje.
class Vypis() :

class Vypis {
    
public $vstup;

public function __construct()
 {
$this->vstup=htmlspecialchars($this->vstup, ENT_QUOTES);
}

public function vypisMa()
{
echo $this->vstup;
}

}

vyips.php

$vypis=new Vypis(); // volam instanciu
$vypis->vstup=$_GET['vstup']; // vstup z formulara
$vypis->vypisMa(); // volam fukciu ktora vypíše vstup na stránku

Pri takomto scenári ak dám do vstupu napr. <style> body {background:red} pozadie je na červno , čize vstup nebol ošetrený.


Takže aký je správny postup, kedy sa ošetruje premenna? ošetriť premenu ešte pred načitanim objektu? (takto to funguje ako ma, ale nieje to podla mojej predstavy ošetriť to raz v objekte a už tu premennu pouzivat v objekte v dalsich funkciach ako ošetrenu)
$vypis=new Vypis(); // volam instanciu
$vypis->vstup=htmlspecialchars($_GET['vstup']); // vstup z formulara
$vypis->vypisMa(); // volam fukciu ktora vypíše vstup na stránku

Alebo to v každej funkcii objektu ošetrovať zvlášť? (čomu som sa práve chcel vyhnut)
class Vypis {
    
public $vstup;

public function __construct()
 {

}

public function vypisMa()
{
$this->vstup=htmlspecialchars($this->vstup, ENT_QUOTES);
echo $this->vstup;
}

public function inaFunkcia()
{
$this->vstup=htmlspecialchars($this->vstup, ENT_QUOTES);
echo $this->vstup;
}

}
Keeehi
Profil
Vypadat by to mohlo asi nějak takto.
class Vypis {
    protected $vstup = '';

    public function pridejObsah($vstup) {
        $this->vstup .= $vstup
    }

    public function vypisHTML() {
        echo htmlspecialchars($this->vstup, ENT_QUOTES);
    }
    
    public function vypisURL() {
        echo urlencode($this->vstup);
    }
}
blaaablaaa
Profil
webik:

class Vypis {
    
private $vstup;
 
public function setVstup($vstup)
{
$this->vstup = $vstup;
}
 
public function getVstup()
{
return $this->vstup;
}
 }

A pak az pri vypise (v sablone, ...) resis, co s tim chces delat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: