Autor Tema: Funciones que llaman a self  (Leído 94 veces)

0 Usuarios y 1 Visitante están viendo este tema.

alotitokehoe

  • Jr. Member
  • **
  • Mensajes: 94
    • Ver Perfil
    • Email
  • Institución: UTN
  • Nombre y apellido: Agustin Lotito Kehoe
  • Sistema: Guarani
  • Utilizo algun sistéma del SIU: Sí
Funciones que llaman a self
« : agosto 27, 2020, 11:20:24 pm »
Buenas noches. Perdón que me vaya  de tema,  es una pregunta de php y no de la aplicación. Voy a poner directo de ejemplo el caso que estamos tratando ahora. Necesitamos redefinir la función get_campos_conf() que está en \siu\operaciones\datos_censales\_comun\util_form_censo, lo hacemos en  pers/mi_univ. El problema es que nunca va a entrar a la funciona de /pres/mi_univ ya que la función que llama a get_campos_conf() lo hace utilizando self::, por lo tanto siempre va a ir a buscar a la que se encuentra en /siu. No encontré algo que me haga evitar redefinir todas las funciones anteriores a la cadena de llamadas. Hay alguna forma? Gracias

Agustín

Leonel Leonardis

  • Moderador Global
  • *****
  • Mensajes: 1456
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: G3W2
Re:Funciones que llaman a self
« Respuesta #1 : noviembre 13, 2020, 12:36:11 pm »
Hola Agustin,

No queda otra que tocar el CORE del 3W, en el archivo src/siu/operaciones/datos_censales/_comun/util_form_censo.php en lugar de:

Código: [Seleccionar]
self::$campos_conf = self::get_campos_conf();
deberia quedar:

Código: [Seleccionar]
self::$campos_conf = static::get_campos_conf();
Acá te dejo un post que explica el porque (late static bindings): https://www.php.net/manual/es/language.oop5.late-static-bindings.php

Nosotros todo lo nuevo lo hacemos con static:: en lugar de self:: para que se pueda personalizar, pero hay cosas que ya quedaron con self:: desde antes.

Si haces dicho cambio en el CORE, luego va a tomar lo que personalices.

Veremos de hacer un reemplazo masivo en futuras versiones.

saludos y gracias por avisar.
2
« Última Modificación: noviembre 13, 2020, 12:46:33 pm por Leonel Leonardis »