Při aktualizaci PHP na webu klienta, který si u mě objednal školení práce s Joomla! a VirtueMart nám po aktualizaci PHP z 5.6 na 7.1 vyskočila následující chyba spojená s šablonou založenou na Gantry: Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Color has a deprecated constructor in ../templates/rt_chapelco/features/color.php on line 11.
V tomto článku vám poradím, jak jakou chybu opravit.
Pokud pominu, že šablony založené na Gantry nemám ráda a jsou s nimi jen problémy spojené s aktualizacemi, občas něco takového zdědím, nebo se ke mně dostane člověk s rozbitým webem v Joomla! a potřebuje prostě pomoc.
V tomto případě byla na webu stará verze Joomla! a při ukládání čehokoliv v administraci se to sekalo s chybou, že je tam moc stará verze PHP. Takže aktualizace PHP byla prostě nutnost.
PHP 7.1 taky není aktuální, ale když nemáme jistotu, jestli si rozšíření nainstalované na daném webu v Joomla! poradí s PHP 7.3 a vyšší, můžeme postupovat po menších krocích. Tady nám to shodilo web už s verzí PHP 7.1, i když jsem Joomlu přes FTP zaktualizovala na verzi 3.9.11.
Problém jasně odkazoval do šablony, jak je patrné z dané chyby - a to konkrétně do souboru color.php, který obsahoval zastralou PHP konstrukci:
class Color {
function Color($hex){
$this->color = $hex;
}
kterou je třeba přepsat na
class Color {
function __construct($hex){
$this->color = $hex;
}