Portál AbcLinuxu, 30. října 2025 16:17
define(DEF_OS_0, 'Linux');
class..
public function getName($k)
{
return 'DEF_OS_'.$k;
}
echo $class->getName(0); //dostanu string "DEF_OS_0" místo požadovaného "Linux"
Řešení dotazu:
class A
{
private $def_os;
public function __constructor($def_os)
{
$this->def_os = $def_os;
}
public function formatName($k)
{
return $this->def_os . $k;
}
}
To je kůli tomu, aby ta třída A nemusela znát, kde tu hodnotu uchováváš. Máš pak svobodu uchovávat tu hodnot i jinde než v DEF_OS, máš svobodu ji přejmenovat, nahradit. Můžeš zavolat dvě instance třídy A s různými hodnotami def_os, etc.
Nevynucuješ, že aby si použitl třídu A, tak musíš mět někde definovanou konstantu DEF_OS.
Pak je otázka názvosloví. Používání getName() jako getteru je samozřejmě zcela v souladu s OOP. Ale zrovna ten prefix get* je obvykle používán ve smyslu získání nějaké hodnoty, bez parametru.
Koukám, že ty se tam totiž dotazuješ na konstantu, jejíž název teprve vytváříš. Dost divoké. Řešení je tedy to co psal voda. Použít funkci constant().
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.