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; }