Pase a ver el tema de las frameworks y ya que estoy por aca te doy mi punto de vista sobre lo que planteas:
La clase esta mal estructurada, fijate como la cambie. Ahora son dos clases, Personas y Persona. No podes incluir los metodos generales de Personas en cada instancia creada del objeto Persona, por lo tanto ahora nos referimos a Personas y Persona.
Código PHP:
// Obtener el registro de una persona cuyo id es 12
$objPersona = Personas::buscar(12);
// Mostrar datos de la persona en pantalla
print 'Nombre :' . $objPersona->getNombre();
print 'Appelido :' . $objPersona->getApellido();
print 'Color :' . $objPersona->getColor();
// Duplicar registro
Personas::guardar($objPersona->getNombre(),
$objPersona->getApellido(),
$objPersona->getColor());
// Crear un nuevo registro y mostrar resultado
print Personas::guardar('Fede', 'Lalala', 'negro');
class Personas
{
public function buscar($personaId)
{
$sql = "SELECT * FROM persons where id=".$personaId;
$sql= mysql_query($sql);
if (mysql_num_fields($sql)!="0")
{
list($id, $nombre, $apellido, $color) = mysql_fetch_array($sql);
return new Persona($id, $nombre, $apellido, $color);
}
return false;
}
public function guardar($personaNombre, $personaApellido, $personaColor)
{
$sql = "INSERT INTO persons SET nombre='".$personaNombre."', apellido= '".$personaApellido."', favorite_color= '".$personaColor."'";
if (mysql_query($sql))
{
return "Registro Guardado";
}
else
{
return "Ha Ocurrido un Error";
}
}
}
class Persona
{
protected $nombre;
protected $apellido;
protected $color;
protected $id;
public function __construct($id, $nombre, $apellido, $color)
{
$this->setId($id);
$this->setNombre($nombre);
$this->setApellido($apellido);
$this->setColor($color);
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getNombre()
{
return $this->nombre;
}
public function setNombre($nombre)
{
$this->nombre = $nombre;
}
public function getApellido()
{
return $this->apellido;
}
public function setApellido($apellido)
{
$this->apellido = $apellido;
}
public function getColor()
{
return $this->color;
}
public function setColor($color)
{
$this->color = $color;
}
}