php Dizi Başlatma

3 Cevap php

I need to initialize an array of objects in PHP. Presently I have the following code:

$comment = array();

Ve ben diziye bir öğe ekleyerek olduğumda

public function addComment($c){
    array_push($this->comment,$c);
}

Burada, $c class Comment bir amacıdır.

Ben kullanarak bu sınıfın bir fonksiyonlara erişmek için çalıştığınızda ancak $comment, ben aşağıdaki hatayı alıyorum:

Fatal error: Call to a member function getCommentString() on a non-object

Herkes nasıl php nesnelerinin bir dizisini başlatmak için bana söyleyebilir misiniz?

Thanks Sharmi

3 Cevap

Benim için bir kapsam sorunu gibi görünüyor.

$comments aslında üye kullanmak yerine $comments ait bir örneği kullanmak olmaz $comments bu sınıfın bir fonksiyonu içinde arayan, bir sınıfın bir üyesi ise Fonksiyonun kapsamına.

Eğer, diğer bir deyişle, bunu, bir sınıf üyesi kullanmaya çalışıyorsanız $this->comments, sadece $comments.

class foo
{
    private $bar;

    function add_to_bar($param)
    {
        // Adds to a $bar that exists solely inside this
        // add_to_bar() function.
        $bar[] = $param;

        // Adds to a $bar variable that belongs to the
        // class, not just the add_to_bar() function.
        $this->bar[] = $param;
    }
}

Bu kod size yardımcı olabilir:

$comments = array();
$comments[] = new ObjectName(); // adds first object to the array
$comments[] = new ObjectName(); // adds second object to the array

// To access the objects you need to use the index of the array
// So you can do this:
echo $comments[0]->getCommentString(); // first object
echo $comments[1]->getCommentString(); // second object

// or loop through them
foreach ($comments as $comment) {
    echo $comment->getCommentString();
}

> GetCommentString () gerçek nesneler üzerinde dizi değil - Ben senin sorunun da olduğunu nasıl dizisine nesneleri ekliyoruz (? Hangi $ this-> Yorum için başvuran) ya da aramak çalışıyor olabilir düşünüyorum dizi.