elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] [DUDA] Strict Standards
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] [DUDA] Strict Standards  (Leído 2,254 veces)
DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
[Resuelto] [DUDA] Strict Standards
« en: 16 Marzo 2015, 23:30 pm »

Exacto, tengo una duda, pues tengo un script que quiero lograr entender pero me da el siguiente error al cargar la página. Y no se que se está haciendo mal aquí:

Este es el error:

Citar
Strict Standards: Non-static method SESmarty::getInstance() should not be called statically in F:\System\Archivos de programa\XAMPP\htdocs\script\header.php on line 35

en esa linea de ese archivo esta el siguiente código:

Código
  1. // INITIATE SMARTY
  2. include "include/class_smarty.php";
  3. $smarty =& SESmarty::getInstance();

ahora ese método se llama desde el archivo "class_smarty.php" en el cual tiene este código:

Código
  1. class SESmarty extends Smarty
  2. {
  3. //...
  4. //...
  5. //Más código
  6. //..
  7. //..
  8.  
  9. //Entonces está es la funcion que se está llamando desde el otro archivo
  10.  
  11. function &getInstance()
  12. {
  13.    static $instance;
  14.  
  15.    if( is_null($instance) )
  16.    {
  17.      $instance = new SESmarty();
  18.    }
  19.  
  20.    return $instance;
  21. }
  22.  
  23.  

Espero me puedan ayudar a ver que es lo que pasa porque no tengo ni idea.

Gracias de antemano!

PD: Esto me pasa con muchas llamadas de funciones que tienen más o menos el mismo estilo de llamarlas. ¿Tendré que configurar algo en apache o php?
PD: Tengo instalado XAMPP!!


« Última modificación: 20 Marzo 2015, 00:36 am por #!drvy » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: [DUDA] Strict Standards
« Respuesta #1 en: 16 Marzo 2015, 23:59 pm »

¿Por qué no está declarada esa función como estática? Debería ser:

Código
  1. public static function &getInstance()


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [DUDA] Strict Standards
« Respuesta #2 en: 17 Marzo 2015, 00:28 am »

Citar
Espero me puedan ayudar a ver que es lo que pasa porque no tengo ni idea.

Gracias de antemano!

PD: Esto me pasa con muchas llamadas de funciones que tienen más o menos el mismo estilo de llamarlas. ¿Tendré que configurar algo en apache o php?
PD: Tengo instalado XAMPP!!

:: Es un accesor estatico (hay excepciones como con static:: ), para metodos estaticos (metodos que no son llamados desde el contexto del objeto). Como no declaraste el metodo como estatico solo puedes accederlo desde el contexto del objeto:

Código
  1. $obj = new SESmarty();
  2. $obj->getInstance();

Veo que es un patron singleton asi que quiero imaginar que de verdad requieres que sea estatico.
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: [DUDA] Strict Standards
« Respuesta #3 en: 17 Marzo 2015, 02:27 am »

Primero que todo quiero aclarar que este script no lo programé yo, por lo tanto todavía no he revisado todo el código. Voy por partes!

Hice lo que me dijo Gus Garsaky y soluciona el problema, gracias.

Ahora me surge la duda pues este es un script con alrededor de 3000+ archivos php, lo que me cuesta entender es ¿por que lo habrán programado asi? O sea ¿por qué ahora tengo que cambiar muchos de estos métodos a estático?

Podrá ser que ¿en versiones anteriores de PHP, esto era permitido? Pues el script es de hace como 4 años.

Gracias

PD: Iré preguntando en este mismo hilo si me encuentro con algún otro problema, espero puedan seguir ayundandome
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [DUDA] Strict Standards
« Respuesta #4 en: 17 Marzo 2015, 02:54 am »

Primero que todo quiero aclarar que este script no lo programé yo, por lo tanto todavía no he revisado todo el código. Voy por partes!

Hice lo que me dijo Gus Garsaky y soluciona el problema, gracias.

Ahora me surge la duda pues este es un script con alrededor de 3000+ archivos php, lo que me cuesta entender es ¿por que lo habrán programado asi? O sea ¿por qué ahora tengo que cambiar muchos de estos métodos a estático?

Podrá ser que ¿en versiones anteriores de PHP, esto era permitido? Pues el script es de hace como 4 años.

Gracias

PD: Iré preguntando en este mismo hilo si me encuentro con algún otro problema, espero puedan seguir ayundandome

Si, parece estar escrito con reglas de OOP de PHP 4.0. No solo usa el :: para acceder a metodos de la clase sin usar static, sino tambien usa los valores por referencia de los objetos. Me imagino porque en PHP 4.0 los objetos se pasaban por valor (y aun se siguen pasando por valor, pero se usan identificadores en lugar de la estructura completa).
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: [DUDA] Strict Standards
« Respuesta #5 en: 17 Marzo 2015, 04:43 am »

Muchas gracias, era lo que imaginaba tambien. Tengo ahora tambien un problema con uan de las funciones que debe realizar el script, pero no he revisado bien el código de esa página, luego reviso y pregunto si me encuentro con algún problema. Gracias por la ayuda! :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines