一种循环,有一个类将自己传递给另一个类


kind of a loop having a class passing itself to another one

我正在用PHP构建一个音乐播放列表插件,为了让我的(大)代码变得清晰,我在类中拆分了每个"包"函数,这取决于这些函数的用途(例如"缓存"函数的类)。

我的主"播放列表"对象在每个子类中传递,因为我需要一直访问它
我确实尽量避免越过整个物体,但我总是被困在某个地方。所以让我的主对象在子类中传递对我来说非常方便

我的问题是:代码运行良好,页面在浏览器中打印,但是。。。浏览器加载轮一直在旋转,就好像页面还没有完成加载一样。

我想问题是到处自引用同一个对象(并嵌套它)存在问题,但我真的不明白为什么,最重要的是,我如何避免这种情况。当我看到&var thing(Passing by Reference),它似乎是一个"链接",而不是变量的副本,但它并没有解决我的问题,轮子一直在旋转。

如果我的问题不完全清楚,我深表歉意。我很难理解整件事,因为英语不是我的第一语言,所以更难向你解释。

我的代码很大,所以我会在这里举例说明我的问题。

class Playlist{
    var $cache;
    function __construct(){
        $this->cache = new PlaylistCache($this); //I guess this may produce problems
        $this->admin = new PlaylistAdmin($this); //I guess this may produce problems
    }
}
class PlaylistCache{
    var $playlist;
    function __construct($playlist){
        $this->playlist = $playlist;
    }
}
class PlaylistAdmin{
    var $playlist;
    function __construct($playlist){
        $this->playlist = $playlist;
    }
}
$playlist = new Playlist();

你认为那些推荐信引起了我的问题吗?谢谢

如果不看看你是如何使用发布的代码的,很难判断,但看起来你的类继承是向后的。您应该让另外两个类继承播放列表类中的方法,而不是让您的播放列表类包含其他两个类。

PHP对象继承

这样,您的播放列表类将是基类,它具有其他两个类可能需要的所有通用方法。

class PlaylistCache extends Playlist
{
    // this class has all public methods from Playlist
}
class PlaylistAdmin extends Playlist
{
    // this class has all public methods from Playlist
}

上面的链接应该有更多关于这方面的内容。希望能有所帮助。