Cita:
Iniciado por nes24 Por fuerza mayor y devido a que tengo muchas funciones, no puedo estar instanciando la clase funcion por funcion al momento de imprimir los errores, definitivamente devo recoger var error en otra funcion para imprimir el array
Nota lo que quiero es evitar instanciar la clase funcion tras funcion, el cuento es qu e si no la instancio pues me sale error, para ello devo determinar si se instancio, ps normal, pero si no se instancio pues la instancio
Haber, parece que tienes un problema de conceptos solamente. Un objeto es la instancia de una clase, hasta acá todo normal... ese objeto al ser instanciado ya posee todos los métodos y atributos si así se definió obviamente. Si instancias ese objeto, no tienes que crear un objeto para poder llamar método por método (una "función" en POO se denomina método).
Código PHP:
// INCORRECTO
$objeto = new Clase();
$objeto->metodo1();
$objeto2 = new Clase();
$objeto2->metodo2();
Código PHP:
// CORRECTO
$objeto = new Clase();
$objeto->metodo1();
$objeto->metodo2();
Eso es una cosa. Ahora también veo que no has comprendido realmente el concepto de atributo de objeto. Si yo defino como private mi variable, esta es accesible sólo por la clase en la que fue definida y sus métodos, por lo tanto, si deseas acceder al contenido de este debes tener los set y get correspondientes (accesadores y mutadores).
Pusiste:
Código PHP:
function a ($parametos){
// instancio
// paso los parametros por el objeto
}
Pero eso NO es una instancia, eso es un método de una clase que recibe ciertos parametros. Insisto que el ejemplo que te plantée al principio, si lo comprendes en totalidad entenderás que lo que necesitas está respondido o por lo menos la idea general y como debe abordarse está mucho más clara. Saber si un objeto está instanciado no tiene sentido, porque UN OBJETO ES UNA INSTANCIA, es algo así como querer comprobar que el agua está húmeda.
Lo otro que podrías hacer, es disponer una variable de clase con static, esta variable es como te digo, de CLASE, NO de instancia u objeto.
Código PHP:
Class Vehiculo
{
static private $contadorVehiculos = 0;
function __construct()
{
Vehiculo::$contadorVehiculos++;
return true;
}
static public function cuantosVehiculos()
{
return Vehiculo::$contadorVehiculos;
}
}
// te mostrará 0, porque no has creado objetos del tipo Vehículo
echo "Número de vehículos: ".Vehiculo::cuantosVehiculos();
// ahora 1, porque creaste un objeto
$coche = new Vehiculo();
echo "<br />Número de vehículos: ".Vehiculo::cuantosVehiculos();
Entonces así puedes saber si has creado un objeto o no de dicha clase, bastaría hacer un:
Código PHP:
if(!(Vehiculo::cuantosVehiculos())) echo "No hay objetos creados";
else "SI hay objetos";
Saludos,
goc00