Ben diziden birini almak için geldiğinde nesnelerin dizi boştur

2 Cevap php

Ben bir veritabanından satırları yüklemek ve daha sonra onlardan nesneleri oluşturmak ve özel bir dizi bu nesneleri eklemek çalışıyorum.

İşte benim sınıfları şunlardır:

<?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];
   }
}

?>

Eğer ben (Şimdi bir kod ve açıklama vardır) veritabanı satır başına bir stationItem nesnesi oluşturma ve sonra stationList özel bir değişken olarak düzenlenen benim dizinin sonuna bu itmek görebilirsiniz.

Bu, bu sınıfları ve onlara özelliklerine erişmek için girişimleri oluşturur kod:

$stations = new stationList();
$station = $stations->getStation(0);
echo $station->getCode();

Ben yapıcı sonunda sizeof ($ stationList) 1 olduğunu bulma yaşıyorum ama biz dizini kullanarak diziden bir nesneyi almak için denemek için geldiğinizde o sıfırdır. Bu nedenle almak hatadır:

Ölümcül hata: olmayan bir nesne üzerinde bir üye işlev getCode () Çağrı

Bu neden oluyor biri bana açıklayabilir miyiz? Ben nesne başvuruları PHP5'ta nasıl yanlış anlama ediyorum sanırım.

2 Cevap

Denemek

$this->stationListing

sınıf ;) iç

Sınıf üyelerine erişmek için her zaman "sihirli" Geçerli instance ve $this kendini referans kullanmak zorunda. Not: Eğer static members böyle erişiyor zaman self:: yerine (veya static:: PHP 5.3 başlayarak, ama bu başka bir hikaye) kullanmak zorunda.

$stationListing kurucudaki yerel bir değişken değil, sizin sınıfta bir başvuru olur. Şu şekilde değiştirin:

function __construct() {
...
$this->stationListing = array();
...
array_push($this->stationListing, $station);