PDA

Voir la version complète: Résolu PHP des Normes Strictes: Seules les variables doivent être passés par référence



ctrenks
30-05-18, 17:09
Message d'erreur après la mise à niveau de visual basic pour 4.2.5 puis dernière version de VBET..

PHP des Normes Strictes: Seules les variables doivent être passés par référence dans /xxxx/includes/vbenterprisetranslator_class_translator.php sur la ligne 410

ctrenks
02-06-18, 21:02
Toute réflexion sur cette erreur, à sa ré -apparaître, mais pas souvent?

vBET
04-06-18, 12:11
Nous allons l'étudier et de vous envoyer la réponse bientôt.

vBET
04-06-18, 12:25
Solution rapide à votre problème:
1. Ouvrir le fichier includes/vbenterprisetranslator_class_translator.php
2. Trouver

public function translateTextToDivide(&$toTranslate, $serie) {
3. Retirer de la ligne de signe " &"
4. Aller à 2 (chaque traducteur a sa propre version de cette fonction si vous devez supprimer le signe en plusieurs endroits)

Quelques explications - le signe "& " permet de passer de la valeur sans la copier, de sorte qu'il a été ajouté pour des raisons de performances.
Depuis une certaine version de PHP le langage nous oblige à y passer seulement les variables (pas de nombre de valeurs ad hoc, lorsque la fonction est appelée). C'est très gênant, parce que nous avons besoin de changer le code dans de nombreux endroits et de créer des variables temporaires uniquement pour l'appel de la fonction, mais c'est la façon dont il fonctionne maintenant, de sorte que nous devons mettre à jour notre code.
Nous vous avons donné la solution rapide. Nous allons vérifier comment la fonction est utilisée et de décider, est-il préférable de supprimer "& " ou de créer des variables temporaires dans certains endroits.

ctrenks
04-06-18, 18:44
Merci, mais si la performance est un problème, je vais permettre à l'erreur comme un très petit événement, mais Merci pour l'explication.

vBET
15-06-18, 22:25
Solution sans la performance punition sera inclus dans la nouvelle version. Pour la correction rapide, s'il vous plaît:
1. Ouvrir le fichier includes/vbenterprisetranslator_class_translator.php
2. Trouver:

return vbet_translateEncodedText(substr($toTranslate, 0, $point), $this->from, $this->to, $serie, $this)
.$this->translateTextToDivide(substr($toTranslate, $point), $serie);
3. Remplacer par:

$rest = substr($toTranslate, $point);
return vbet_translateEncodedText(substr($toTranslate, 0, $point), $this->from, $this->to, $serie, $this)
.$this->translateTextToDivide($rest, $serie);
4. Aller à 2 (plusieurs traducteurs ont ce code)

Automatic Translations (Powered by Google, Microsoft®, Yandex, SDL Language Cloud, IBM Watson and Apertium):
AfrikaansAlbanianArabicBelarusianBulgarianCatalanChineseCroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTaiwaneseThaiTurkishUkrainianVietnameseWelshYiddish
Translated to other languages thanks to vBET Translator 4.10.1