只返回一个元素,OO PHP

时间:2008-11-24 11:29:46

标签: php oop

class Score
{
    var $score;
    var $name;
    var $dept;
    var $date;

    function Score($score, $name, $dept, $date)
    {
        $this->scores = ($score);
        $this->name = ($name);
        $this->dept = ($dept);
        $this->date = ($date);
    }

    function return_score(){
        return $this->scores;
        return $this->name;
        return $this->dept;
        return $this->date;
    }
}

$newscore = new Score("131313","James", "Marketing", "19/05/2008");
echo $newscore->return_score();

上面的代码只回显131313.我刚刚开始学习OO PHP,所以请放心!完全输了,所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:3)

您只能在每个函数或方法中返回一个值。

在您的情况下,您应该为每个班级成员提供一种方法:

public function getScore() {
   return $this->score;
}

public function getName() {
   return $this->name;
}

public function getDept() {
   return $this->dept;
}


public function getDate() {
   return $this->date;
}

评论后编辑:

您还可能需要一个将所有成员作为单个字符串返回的方法:

public function getAll() {
   return $this->getScore(). " " .$this->getName() . " " .$this->getDept(). " " .$this->getDate();
}

答案 1 :(得分:2)

您不能在函数中多次返回。你可以返回一个连接的字符串:

return $this->scores.' '.this->name.' '.$this->dept.' '.$this->date;
//added spaces for readability, but this is a silly thing to do anyway...

我不推荐它,因为你要将对象的呈现与其功能混合在一起 - 不要。

我建议制作某种模板(我想你可能想把这些数据制成表格?)。每行看起来像:

<tr>
  <td><?php echo $score->name; ?></td>
  <td><?php echo $score->scores; ?></td>
  <!-- more cells for more properies? -->
</tr>

并在数组中提供您的对象(您知道foreach {}?)。我知道它看起来更啰嗦,但从长远来看,将这些问题分开对你来说会更好。

使用=分配:您不需要围绕被分配事物的括号(通常)。

同时 你在运行PHP4吗?你的构造函数表明你是。我建议尽可能地移动到5.21或更高,因为类和对象要好得多。您还可以使用相当有用的__construct方法(而不是使用类命名方法 - 在您的情况下:Score())。这使得继承和扩展更容易,因为您的类不再需要在两个地方记住它们从哪个类扩展。

答案 2 :(得分:1)

首先,你应该使用public,protected或private而不是var

var $score;
var $name;
var $dept;
var $date;

,例如

protected $score;

或带有编码标准前缀的受保护/私有变量和带有下划线的方法,如

protected $_score;

此方法也可称为__construct

function Score($score, $name, $dept, $date)
{

var声明为得分,但您为分数指定了一个变量。我也不明白为什么你在变量周围有括号。

        $this->scores = ($score);
        $this->name = ($name);
        $this->dept = ($dept);
        $this->date = ($date);

替换为

    $this->score = $score;
    $this->name = $name;
    $this->dept = $dept;
    $this->date = $date;

}

遇到的第一个返回将从函数/方法返回该值。我建议你重新编写为每个变量添加get / set,即getScore()或使用PHP5方法重载__set,__ get和__call。

public function getScore() {
        return $this->score;
}

}

您还可以查看设置和获取变量的自动方法Overloading