我正在尝试从数据库加载行,然后从它们创建对象并将这些对象添加到私有数组。
以下是我的课程:
<?php
include("databaseconnect.php");
class stationItem {
private $code = '';
private $description = '';
public function setCode($code ){
$this->code = $code;
}
public function getCode(){
return $this->code;
}
public function setDescription($description){
$this->description = $description;
}
public function getDescription(){
return $this->description;
}
}
class stationList {
private $stationListing;
function __construct() {
connect();
$stationListing = array();
$result = mysql_query('SELECT * FROM stations');
while ($row = mysql_fetch_assoc($result)) {
$station = new stationItem();
$station->setCode($row['code']);
$station->setDescription($row['description']);
array_push($stationListing, $station);
}
mysql_free_result($result);
}
public function getStation($index){
return $stationListing[$index];
}
}
?>
正如您所看到的,我正在为每个数据库行创建一个stationItem对象(现在有一个代码和描述)然后我将它们推送到我的数组的末尾,该数组在stationList中作为私有变量保存。
这是创建此类并尝试访问它们的属性的代码:
$stations = new stationList();
$station = $stations->getStation(0);
echo $station->getCode();
我发现构造函数末尾的sizeof($ stationList)是1但是当我们尝试使用索引从数组中获取对象时它是零。因此,我得到的错误是:
致命错误:在非对象
上调用成员函数getCode()有人可以向我解释为什么会这样吗?我想我误解了对象引用在PHP5中是如何工作的。
答案 0 :(得分:3)
尝试
$this->stationListing
在课堂内;)
要访问班级成员,您必须始终使用当前实例的“神奇”$this
自引用。注意:当您访问静态成员时,您必须使用self::
代替(或static::
从PHP 5.3开始,但这是另一个故事。)
答案 1 :(得分:1)
$stationListing
引用了一个局部变量,而不是类中的变量。将其更改为以下内容:
function __construct() {
...
$this->stationListing = array();
...
array_push($this->stationListing, $station);