2014-05-02 105 views
0

我正在創建一個插件系統,其中的插件存儲在php類中。每個插件都使用主包的類實例來執行其功能。通過變量傳遞類實例

<?php 
class main { 
    //Class methods 
    ... 

    function execute(){ 
    ... 
    } 

    function load_plugin($name) { 
    ... 
    include 'plugins/' . $name . '.php'; 
    $this-> {$name}=new $name ($this); 
    return true; 
    } 

而且在「插件/使用example.php:」

<?php 
class example { 
    function __construct($main){ 
    $this->main=$main; 
    } 

    function delete(){ 
    $this->main->execute(); 
    } 
} 

的問題是,我不能設法把類的實例到plugin.I使用定義嘗試,但無法管理。 如何將當前類實例傳遞給插件?

+0

我認爲你需要實現__get和__set方法,使您的main-> load_plugin($名),並在其內部函數:$ this- > {$ name} = new ....甚至可以工作。 也許你會使用'extends'不是將類注入到構造函數中。 – Seti

回答

0

使用main類的方法,你必須要擴展example

class example extends main{ 
//you cade 
} 
+0

這意味着我爲每個插件使用**新類實例**。我真正想要的是對所有插件使用一個類實例,例如: '$ main-> plugin1-> method(); $ main-> plugin2-> method2(); $ main-> plugin3-> method3(); ' – jayzantel