使用getter和setter从扩展类访问类变量

时间:2013-10-28 21:00:28

标签: php class extends

我试图通过php脚本中的另一个类从一个类访问变量:

我的第一堂课是:

班级数据{

  private $length;
  private $height;      

   public function setLength($length){
    $this->length = $length;
   }

   public function getLength(){
    return $this->length;
   }

  public function setHeight($height){
    $this->height = $height;
   }

   public function getHeight(){
    return $this->height;
   }

}

我有另一个班级:

class proccess extends data{

   public function getOrientation(){
      if($this->getLength() > $this->getHeight()) {
       $orientation = 'landscape';
      } else {
      $orientation = 'portrait';
   }

   }

}

当尝试从类进程访问$ this-> getLenght()或$ this-getHeight()时,值为空;我通过我的PHP脚本设置值,如下所示:

<?php


  require_once('functions/data.php');
  require_once('functions/process.php');

  $data=new data();
  $process = new process();

  $data->setLength(25);
  $data->setHeight(30);
  $orientation = $process->getOrientation();

关于为什么函数getOrientation无法获取宽度和长度值以及如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:3)

您正在为$data的其他对象设置值。您必须为$process设置它们。

  $process = new process();

  $process->setLength(25);
  $process->setHeight(30);
  $orientation = $process->getOrientation();

答案 1 :(得分:-1)

变量应为protected而不是private - 请参阅:

http://php.net/manual/en/language.oop5.visibility.php What is the difference between public, private, and protected?

而且,正如MahanGM指出的那样,您使用的是两个不同的对象实例,它们完全没有关系。您应该执行$process->setLength$process->setHeight$data->getOrientation

相关问题