이 질문이 전에 물어 본지는 모르지만 나는 그것을 찾고 있었고 아무것도 볼 수 없었다.PHP에서 부모 변수에 액세스하는 방법
내 문제는 다음과 같습니다.
두 클래스가 있습니다. 아버지 클래스 (Products.php는) 다음 코드를 포함
아이 클래스 (Oferta.php가) Producto.php에서 확장하고 다음 코드가 포함되어class Producto {
protected $id;
protected $producto;
protected $descripcion;
//CONSTRUCT FUNCTION
function __construct($id, $prod, $description){
$this->id=$id;
$this->producto=$prod;
$this->descripcion=$description;
}
//THE NEXT TO METHODS LOOK FOR IN THE DATABASE AND UPDATE THE PROPERTIES VARIABLES
public static function db_select_producto_by_id($mysqli,$id){
$query="SELECT * FROM tb_productos WHERE id='$id' LIMIT 1";
return Producto::db_select($mysqli,$query);
}
public static function db_select_producto_by_name($mysqli,$name){
$query="SELECT * FROM tb_productos WHERE producto='$name' LIMIT 1";
return Producto::db_select($mysqli,$query);
}
protected static function db_select($mysqli, $query)
{
$result = $mysqli->query($query);
if($result->num_rows > 0)
{
$row=$result->fetch_array(MYSQLI_ASSOC);
return new Producto($row['id'], $row['producto'], $row['descripcion']);
}else
return new Producto(0, 'none', 'none');
}
: 당신이 볼 수 있듯이
class Oferta extends Producto{
protected $idOferta;
protected $tipoOferta;
protected $precioOferta;
protected $descripcionOferta;
function _construct($idOferta, $tipoOferta, $precioOferta, $descripcionOferta, $id,$prod,$descripcion){
$this->idOferta=$idOferta;
$this->tipoOferta=$tipoOferta;
$this->precioOferta=$precioOferta;
$this->descripcionOferta=$descripcionOferta;
parent::__construct($id,$prod,$descripcion);
}
//METHODS THAT SELECT FROM THE DATABASE
public static function db_oferta_by_ofertaId($mysqli, $idOferta)
{
$query="SELECT * FROM tb_ofertas WHERE id=".$idOferta;
return self::db_select($mysqli, $query);
}
public static function db_oferta_by_productoId($mysqli, $productoId)
{
$query="SELECT * FROM tb_ofertas WHERE idproducto=".$productoId;
return self::db_select($mysqli, $query);
}
protected static function db_select($mysqli, $query)
{
$result = $mysqli->query($query);
if($result->num_rows > 0)
{
$row=$result->fetch_array(MYSQLI_ASSOC);
//MY PROBLEM IS HERE, BECAUSE I WANT TO ACCESS THE THE PARENTS VARIABLES TO RETURN AN OFERTA CLASS READING ALL THE VALUES FROM THE DATABASE
$producto=parent::db_select_producto_by_id($mysqli,$row['idproducto']);
return new Oferta($row['id'], $row['tipooferta'], $row['preciooferta'], $row['descripcionoferta'], $producto->id, $producto->producto, $producto->descripcion);
}else
return new Oferta(0, 'none', 'none', 'none', 'none', 'none', 'none');
}
을 Oferta 클래스의 db_select 메서드에서 일단 데이터베이스에서 읽은 부모 속성에 액세스 할 수 없습니다. 내가 모든 솔루션을 뵙죠 것, 사전에 감사
당신은 단지 $에이 개체를 호출하여 당신이에서 연장하고있는 클래스의 메소드에 액세스 할 수 있습니다
어떤 변수에 액세스하려고합니까? 나는 그것을 얻지 못한다 .. – Zim84
어떤 에러가 발생합니까? –
그것은 'db_select ($ mysqli, $ query)'메소드가 DB에서 읽은 값을 클래스의 변수에로드해야하기 때문에 오류가 없습니다. 아버지 클래스에서는 작동하지만, Oferta에서는 Producto :: db_select() 메서드를 실행하고 자식 클래스에서 retuened 값을 사용하는 방법을 알지 못하기 때문에 doesnt합니다. – galeonweb