J'utilise le composant Artio Joomsef avec le plug-in Virtuemart principalement pour la manipulation de sitemap. Cependant, chaque fois que je l'active, l'erreur suivante s'affiche dans les pages du produit:
Obsolète: la méthode non statique JoomSefLogger :: Log () ne doit pas être appelée de manière statique, en supposant que $ this provient d'un contexte incompatible dans /mnt/data/vhosts/mydomain/httpdocs/components/com_sef/sef_ext/com_virtuemart.php à la ligne 404
Cette erreur concerne la fonction ci-dessous:
Function GetProductManufacturerId($productId)
{
$database = JFactory::getDBO();
$database->setQuery("SELECT `virtuemart_manufacturer_id` FROM `#__virtuemart_product_manufacturers` WHERE `virtuemart_product_id` = '{$productId}'");
$mId = $database->loadResult();
if (is_null($mId)) {
JoomSefLogger::Log("Manufacturer for product ID {$productId} not found.", $this, 'com_virtuemart');
}
return $mId;
}
Est-il possible de modifier la fonction pour que l'erreur ne s'affiche plus? Malheureusement, Artio ne fournit pas de support pour l'extension à moins que vous ne l'achetiez en complément du composant lui-même, et le forum de support n'est pas très actif.
Je ne suis pas chaud avec php, donc j'espère que quelqu'un pourra vous donner des conseils afin que je puisse mettre à jour le code avec et utiliser un remplacement afin d'éviter qu'il ne réapparaisse.
Cela fonctionne sur Joomla 3.6.4 VM 3.0.18 et php 5.6.
Merci d'avance Donna
Il s’agit d’un avertissement plutôt que d’une erreur. Il ne faut donc pas casser votre site. La solution la plus simple consisterait à désactiver le signalement strict des erreurs (le signalement des erreurs devrait de toute façon être désactivé sur tout site actif.)
de php.net:
Dans PHP 5, l'appel de méthodes non statiques génère un avertissement de niveau E_STRICT.
Dans PHP 7, l'appel de méthodes non statiques est obsolète et génère un avertissement E_DEPRECATED. La prise en charge de l'appel de méthodes non statiques peut être supprimée à l'avenir.
En changeant JoomSefLogger::Log
à (new JoomSefLogger)->Log
peut résoudre le problème, tout comme rendre la fonction JoomSefLogger
statique. Notez que tous les correctifs à l'avenir peuvent toutefois remplacer ces modifications.
Cela dit, je pense que la solution la plus judicieuse serait de