簡體   English   中英

為什么我的PHP插件系統無法正常工作?

[英]Why won't my PHP plugin system work?

我正在嘗試制作一個簡單的插件系統的原型,計划將其實施到我的一個項目中。 我有4個文件:

  • Index.php
  • Plugins/__BASE.php
  • Plugins/Sample.php

索引文件使用我在Plugins類( __BASE.php )中定義的函數檢查'oncall'方法是否屬於Plugins文件夾中的類。 如果確實存在,它將執行它。

require_once 'Plugins/__BASE.PHP';

$func  = 'oncall';
$plugins = new Plugins();

if($plugins->IsPluginMethod($func)) {
    $obj = $plugins->GetObject($func);
    call_user_func(array($obj, $func));
}
else
    echo "'$func' isn't part of a plugin!";

__BASE.php是所有插件都將擴展的基本插件類。 它有兩個方法: IsPluginMethod()GetObject() IsPluginMethod檢查提供的方法名稱是否屬於一個類,並且GetObject返回該方法所屬的類的實例。

class Plugins {

    public $age = "100";

    public function IsPluginMethod($func) {
        foreach(glob('*.php') as, $file) {
            if($file != '__BASE.php') {
                require_once $file;
                $class = basename($file, '.php');
                if(class_exists($class)) {
                    $obj = new $class;
                if(method_exists($obj, $func))
                    return true;
                else
                    return false;
            }
        }
    }
}

    public function GetObject($func) {
        foreach(glob('*.php') as $file) {
            if($file != '__BASE.php') {
                require_once $file;
                $class = basename($file, '.php');
                if(class_exists($class)) {
                    $obj = new $class;
                    return $obj;
                }
            }
        }   
    }
}

Sample.php是一個示例插件,它打印$ this-> age(在Plugins類中定義)。

class Sample extends Plugins {

    public function oncall() {
        echo "Age: {$this->age}";
    }
}

這是我在index.php中看到的:

'oncall' isn't part of a plugin!

有人可以幫忙嗎? 謝謝。

在__BASE.php文件中,將(glob('*.php')更改為glob('Plugins/*.php')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM