PHP问题从另一个静态类调用静态类

时间:2016-06-17 10:41:02

标签: php object

我有两个相关的对象。相册 - >乐曲。一张专辑有很多歌。在专辑类中,我有一个名为GetSongs()的方法。这就是你所期望的。

我有一个基类,它包含我在所有对象中使用的通用功能。专辑和歌曲都扩展了这个对象。这里重要的方法是。

public function Get(){
    return new static();
}

专辑和歌曲都有一个名为ByID($postid)的方法。此方法将获取ID,从DB获取信息并填充空白对象。这允许我创建这样的专辑。这段代码工作正常。

$album = Album::Get()->ByID(1);

public function ByID($postid) {
    $post = "sql to get info from db";
    $this->Title = $post['title'];
    .....
    return $this;
}

当我调用名为GetSongs()的方法时会出现问题。出于某种原因,此方法返回Album对象。

public function GetSongs()
{
    $songresults = "SQL and other code to get the songs from the db";

    $songs = array();
    foreach($songresults as $song) {
        $songs[] = Song::Get()->ByID($songresults["ID"]);
    }
    return $songs;
}

这看起来很简单,但我不明白发生了什么。 Song::Get()->ByID()实际上是从Album对象而不是Song对象调用ByID方法,即使代码正在引用歌曲对象。

0 个答案:

没有答案