Hola,
El error que te da es bastante claro ... estas llamando al metodo getId() en una variable que no es un objeto ...
Ejemplo:
Código PHP:
$object = 'hola';
$object->getId(); // Esto falla con el error que indicas ...
No hagas esto: self::metodoEstatico(). Self se utiliza para llamar a metodo estaticos y siempre se refiere a la clase donde estas. No es tu caso.
Código PHP:
function __construct() {
$args = func_get_args();
$nargs = func_num_args();
switch($nargs){
case 1:
self::__construct0();
break;
case 2:
self::__construct1($args[0], $args[1]);
break;
}
}
function __construct0() { }
function __construct1($xid, $xnombre) {
$this->id = $xid;
$this->nombre = strtoupper($xnombre);
}
Definicion basica de una funcion o un metodo:
Código PHP:
function hazAlgo($parametro = ''){
// Código para hacer algo ...
}
Ahora, la funcion de arriba la puedes llamar asi:
Código PHP:
hazAlgo(); // Funciona sin problemas
O asi:
Código PHP:
hazAlgo('Un parametro'); // Tambien funciona
Aplicandolo a un constructor tuyo este concepto de parametros con valores por defecto quedaria asi:
Código PHP:
function __construct($xid = 0, $xnombre = null, $xmarca = null) {
$this->id = $xid;
$this->nombre = strtoupper($xnombre);
$this->marca = $xmarca;
}