PDA

Visa fullständig version: Löste PHP Strikta Normer: Endast variabler som ska skickas genom hänvisning



ctrenks
30-05-18, 17:09
Fel efter uppgradering av VB 4.2.5 sedan den senaste publiceringen av VBET..

PHP Strikta Normer: Endast variabler som ska skickas genom hänvisning i /xxxx/includes/vbenterprisetranslator_class_translator.php på linje 410

ctrenks
02-06-18, 21:02
Några tankar om det här felet, att synas men inte så ofta?

vBET
04-06-18, 12:11
Vi kommer att undersöka det och skicka svar snart.

vBET
04-06-18, 12:25
Quick fix för problemet:
1. Öppna fil includes/vbenterprisetranslator_class_translator.php
2. Hitta

public function translateTextToDivide(&$toTranslate, $serie) {
3. Ta bort från linjen tecken " &'
4. Gå till 2 (varje översättare har sin egen version av denna funktion så du behöver för att ta bort tecknet på flera ställen)

En förklaring - tecken "& " gör det möjligt att passera värde utan att kopiera det, så det var extra av prestandaskäl.
Sedan någon version av PHP krafter att klara det endast variabler (inte värden räknas ad hoc-när funktionen anropas). Detta är mycket besvärligt, eftersom vi behöver ändra koden på många platser och skapa temporära variabler endast för att ringa funktion, men det är så det fungerar nu, så vi kommer att uppdatera vår kod.
Vi gav dig en snabb fix. Vi kommer att kontrollera hur funktionen används för och besluta, är det bättre att ta bort "& " eller skapa temporära variabler på vissa ställen.

ctrenks
04-06-18, 18:44
Tack, men om prestanda är en fråga, jag kommer att låta fel, eftersom dess en mycket liten händelse men Tack för förklaringen.

vBET
15-06-18, 22:25
Lösningen utan resultat straff kommer att ingå i den nya utgåvan. För quick fix, kontakta:
1. Öppna fil includes/vbenterprisetranslator_class_translator.php
2. Sök:

return vbet_translateEncodedText(substr($toTranslate, 0, $point), $this->from, $this->to, $serie, $this)
.$this->translateTextToDivide(substr($toTranslate, $point), $serie);
3. Ersätt med:

$rest = substr($toTranslate, $point);
return vbet_translateEncodedText(substr($toTranslate, 0, $point), $this->from, $this->to, $serie, $this)
.$this->translateTextToDivide($rest, $serie);
4. Gå till 2 (flera översättare har den här koden)

Automatic Translations (Powered by Google, Microsoft®, Yandex, SDL Language Cloud, IBM Watson and Apertium):
AfrikaansAlbanianArabicBelarusianBulgarianCatalanChineseCroatianCzechDanishDutchEnglishEstonianFilipinoFinnishFrenchGalicianGermanGreekHaitian CreoleHebrewHindiHungarianIcelandicIndonesianIrishItalianJapaneseKoreanLatvianLithuanianMacedonianMalayMalteseNorwegianPersianPolishPortugueseRomanianRussianSerbianSlovakSlovenianSpanishSwahiliSwedishTaiwaneseThaiTurkishUkrainianVietnameseWelshYiddish
vBET 4.10.1 gives automatic translations