quarta-feira, 22 de junho de 2011

"Deprecated: Assigning the return value of new by reference is deprecated in ... " [SOLVED, AS FOR MooTools FRAMEWORK]

Ricardo Goldbach


[an english version of this text is provided a few lines below]


Durante experiência de uso com o Joomla! CMS, esbarrei no problema abaixo, mensagens de erros oriundos do framework MooTools:
Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\some_directory\plugins\content\mosmodule\mosmodule.inc.php on line 246

Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\some_directory\plugins\content\mosmodule\mosmodule.inc.php on line 505
Através de pesquisas no Google constatei que isso afeta a comunidade há anos e que não há (ao menos não encontrei após horas de buscas) nenhuma indicação de solução. Verificando o código do mosmodule (coisa que eu deveria ter feito logo de início), vi que bastava remover o & que especifica a (agora pré-obsoleta) passagem de parâmetro por indireção, transformando-a em passagem por valor:



Correção feita, bastou repeti-la na linha 505, que originalmente estava como abaixo:






Não ligue para a aparente quebra de string apontada pelo syntax highlighting do TextPad; colocando-se um fechamento de aspas simples em ...LIMIT 1' o problema estará apenas "cromaticamente" resolvido, pois o PHP passa a apontar erro na última linha do arquivo. O bug aqui aparenta estar no parser do editor (e no meu olho :), mesmo:






[english version]

While running some Joomla! CMS code in a MooTools framework environment, I hit something that -- as pointed out by Google -- wasn't happening only to my code. Out of the blue, PHP started issuing the following error messages:
Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\some_directory\plugins\content\mosmodule\mosmodule.inc.php on line 246

Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\some_directory\plugins\content\mosmodule\mosmodule.inc.php on line 505

Since the community was unsuccessfully trying to clear this for years, I'm glad to publish the ammendment I've made, as simple as removing the (now deprecated) indirection operator, thus forcing the parameter to be passed by value -- please refer to the pictures above.

Don't mind the string break pointed out by TextPad's syntax highlighting; when I placed a closing single quote  at ... LIMIT 1', the problem was "chromatically" solved, the code colors being rendered correctly; on the other hand, PHP started signaling a syntax error (my visual quote parsing was as bad as TextPad's :). It seems that the editor is the buggy culprit, in this case.

Nenhum comentário:

Postar um comentário