Hola tengo un problema en mi proyecto resulta que al instanciar las class me da un error
Strict Standards: Non-static method Core::getInstance() should not be called statically in C:\xampp\htdocs\redsocial.com\header.php on line 118
| |||
problemas con instanciar una classe Hola tengo un problema en mi proyecto resulta que al instanciar las class me da un error Strict Standards: Non-static method Core::getInstance() should not be called statically in C:\xampp\htdocs\redsocial.com\header.php on line 118 |
| ||||
Respuesta: problemas con instanciar una classe ¿Que tienes en la clase? ¿Cómo la declaraste? Acuérdate que para poder ayudarte necesitas brindarnos información. Otra cosa si estás usando PHP5 no debes usar referencia.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
Respuesta: problemas con instanciar una classe
Código PHP:
Ver original mi class de la db como la declaro asi $tsdb =& tsDatabase::getInstance(); |
| ||||
Respuesta: problemas con instanciar una classe Ok, veo que estás usando PHP4, ¿por qué no tratas de cambiar a PHP5? Otra cosa, no sé si PHP4 usa static pero tsDatabase::getInstance() está tratando de llamar una clase que sea estática. Por lo que getInstance debes declararla como static.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| ||||
Respuesta: problemas con instanciar una classe Aparte que en PHP5 ya no debes de usar &= porque en PHP5 todos los objetos se devuelven por referencia, y el uso que tienes ahí de global y static son incorrectos, lo correcto en teoría debería de ser algo así:
Código PHP:
Ver original Aunque también usar singleton para conexiones de la BDD es des-aconsejado, busca en el foro, hay muchas discusiones al respecto. Saludos. |
| |||
Respuesta: problemas con instanciar una classe Mi problema de migrar a php5 es que no estoy muy actualizado al php 5 y casi no se como empezar las cosas :( |
| ||||
Respuesta: problemas con instanciar una classe Pero si ya dominas la del 4, solo es cuestión de aprender lo nuevo en el 5.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| ||||
Respuesta: problemas con instanciar una classe En el Manual de PHP hay una sección de migración y te puede ayudar a identificar lo que cambio entre PHP4 y PHP5. Saludos. |
| |||
Respuesta: problemas con instanciar una classe Bueno chicos e echo hast ahora algunas cosas esta en mi clase de la db en mi proyecto espero vaya bi en alguno que pueda responderme se lo agradeceria saludos
Código PHP:
Ver original |
| |||
Respuesta: problemas con instanciar una classe hola bueno de tanto lidear con el ejemplo de gatorv no se si este empezando por un buen camino el cambio de las referencias & y eliminando variables globales aqui les dejo lo que echo hasta ahora si alguno puede responderme a mi ejemplo se los agradeceria saludos y gracias por la paciencia y ayuda hasta ahora
Código PHP:
Ver original espero vaya bien :) |
| ||||
Respuesta: problemas con instanciar una classe Declaras la propiedad $_dbLink, pero nunca la usas, y usas el operador static dentro de tu clase la cual no es necesaria, usa mejor la propiedad $_dbLink. Saludos. |
| |||
Respuesta: problemas con instanciar una classe bueno hice el cambio GatorV aquí lo dejo y lo revises estoy usando esto
Código PHP:
Ver original utilizando la propiedad $_dblink. como lo indicaste alla arriba eliminando las variables static y globas que tenia mi pregunta es yo lo hago asi no se si esta bien hago una class ejemplo class mi_class extends class_db { private static $_dblink = null; public static function getInstance(){ if (!(self::$_dblink instanceof self)) { self::$_dblink = new self(); } return self::$_dblink; } public function mifuncion(){ $query = $this->select("configuracion","*","","",1); // RETORNAMOS return $this->fetch_assoc($query); } } eso esta bien pregunto no ay problemas en como lo esto haciendo Última edición por thehack; 06/08/2011 a las 15:32 Razón: edtado |
| ||||
Respuesta: problemas con instanciar una classe Creo que deberian estar todas asi : public static function(){ } y llamar tsDatabase::myfunction(); o si no $var="tsDatabase"; $var::myfunction(); si estas ejecutando variables privadas fuera de la function te dara fatal error solo pueden ser llamadas dentro de la function si deseas llamarla puedes meterla dentro la function con la explicacion que te di de static Tambien vi que usas var eso en cualquier momento no seguira functionando son interpretadas como public asi que me jor usa public suerte . |
| ||||
Respuesta: problemas con instanciar una classe Ojo con heredar tus clases solamente por heredar, el heredar se debe de hacer cuando tienes una relación de uso. Si tu clase solamente va a usar tu clase DB, debes de solamente guardar la instancia en una variable y usarla, o mejor inyectarla en tiempo de ejecución:
Código PHP:
Ver original Así desacoplas la independencia. Es lo que se conoce como inyección de dependencias. Saludos. |
| |||
Respuesta: problemas con instanciar una classe no entendi la parte de no heredar solo por heredar, osea lo de abajo esta mal herencia de la base de datos esta mal no entiendo deberas me enrede y disculpa es q apenas comienzo en php 5 y esto se me hace un poco complicado GatorV dices que mejor es hacer el paso 2
Código PHP:
Ver original Paso 2:
Código PHP:
Ver original No hace falta hacer esto
Código PHP:
Ver original |
| ||||
Respuesta: problemas con instanciar una classe primera vez que veo este metodo : Código PHP: |
| |||
Respuesta: problemas con instanciar una classe jejejeje bueno eh terminado algunas cosas hasta los momento e echo consultas y no me ha dado error no se si estare empezando por buen pie les coloco mi codigo 1: config.inc.php
Código PHP:
Ver original 2:config.class.php
Código PHP:
Ver original 3:db.php
Código PHP:
Ver original ese es mi codigo a la db como lo utilizo
Código PHP:
Ver original ejemplo de una clase donde hago consultas a la DB
Código PHP:
Ver original esta bien los pasos que hasta el momento e realizado consultas a la db Última edición por thehack; 07/08/2011 a las 15:07 Razón: Edit algo mal escrito |
| ||||
Respuesta: problemas con instanciar una classe este metodo que usas sirve para evitar usar utf8_encode? es la primera vez que lo veo Cita: mysql_query("set names 'utf8'"); mysql_query("set character set utf8"); Bueno lo que as hecho es impresionante pero sinseramente no para mi gusto me temo que estaras revisando el config classs. inc todo el rato asta que te acuerdes de tus funciones realizadas podras usar : get_class_methods('miclase'); asi sabras las funciones que tienes. // si se tratara de seguridad ok estoy de acuerdo . Creo que no isiste caso de php 5 myclase::myfuncion eso es lo que deberias cambiar para menos esfuerzo. //creo que podias metes una funcion dentro de otra pero tambien no importa lo haces de fuera mi_fun(fun_2("ejecuta..")); Tambien tienes la oportunidad de meterle una clase a esas misma clase cuando quieras una clase en especifico para ese archivo en concreto no para todos asi no estas metiendo un archivo.php con cada clase ni ir a la misma clase a meter otra funcion algo como: static class clase{ private $va; public function my_fun( classe_2 $clase2){ //ejecuta public $clase2->$va="hola"; } } $clase= new clase; $clase::$va; $clase::my_fun(classe_2 new myclass() ); es como si mysql_query no fuera suficiente para ti Mi recomendacion es que dejes las clases para cosas mas importantes saludos Última edición por skywolker; 07/08/2011 a las 17:35 |
Etiquetas: |