显示对象私有属性

时间:2015-03-15 13:41:23

标签: php class private

这是作业。我创建了两个类,Objecte和Ordinador。 Ordinador属性是私有的,Objecte中的$ preu也是强制性的。

<?php
class Objecte
{
var $model;
private $preu;

public function __construct($model,$preu)
{   
    $this->model=$model;
    $this->preu=$preu;  
}
}
?>

这是普通人:

<?php
include('classe_objecte.php');
class Ordinador extends Objecte
{
private $disc_dur;
private $ram;

public function Ordinador($model,$preu,$disc_dur,$ram)
{
    parent::__construct($model,$preu);
    $this->disc_dur=$disc_dur;
    $this->ram=$ram;    
}   
}
?>

所以我存储了一些我创建的对象。它们存储在SESSION数组中。所以现在我必须显示这些值,但是因为它们在类中是私有的,所以我得到了这个错误:

Notice: Undefined property: Ordinador::$preu 
Fatal error: Cannot access private property Ordinador::$disc_dur

有关如何访问它的任何建议吗?。

3 个答案:

答案 0 :(得分:1)

您必须创建一个调用private var

的公共函数
public function getPreu(){
    return $this->preu;
}

答案 1 :(得分:0)

而不是:

parent::__construct($model,$preu);

尝试:

$this->__construct($model,$preu);

答案 2 :(得分:0)

在这种情况下,我要存储这样的对象:

    $index=$_SESSION['numOrdinadorsO'];     
    $_SESSION['objetos_ordinador'][$index]=inserirOrdinadorO();

并且inserirOrdinadorO的功能看起来像这样:

function inserirOrdinadorO()
{
    $_SESSION['ordinadorsO']=array('model_ordinadors'=>$_POST['model_ordinadors'],'preu_ordinadors'=>$_POST['preu_ordinadors'],'tamany'=>$_POST['tamany'],'ram'=>$_POST['ram']);

    $model=$_SESSION['ordinadorsO']['model_ordinadors'];
    $preu=$_SESSION['ordinadorsO']['preu_ordinadors'];
    $disc_dur=$_SESSION['ordinadorsO']['tamany'];
    $ram=$_SESSION['ordinadorsO']['ram'];

    $ord_tmp = new Ordinador($model,$preu,$disc_dur,$ram);

    $_SESSION['numOrdinadorsO']+=1;
    echo "Objecte Ordinador inserit.</br>";     
    return $ord_tmp;
}

不确定如何实施Yair给我的解决方案:

  

$ obj = new Objecte(&#39; modele&#39;,&#39; preu&#39;);然后回显$ obj-&gt; getPreu();