PHP пытается запустить экземпляр, но ищет его в локальной папке

#php #pocketmine

#php #pocketmine

Вопрос:

Если это не очевидно по тому, как сформулирован заголовок этого сообщения, я понимаю, что происходит не так, но я не знаю словарного запаса, необходимого для формулировки вопроса, чтобы получить ответ через Google.

Фактически это сводится к тому, что у меня есть основной класс php, который регистрирует прослушиватель событий как таковой:

 class Main extends PluginBase {

public function onEnable(){
    $this->getServer()->getLogger()->info("Loading all the things");
    $pluginManager = $this->getServer()->getPluginManager();

    
    $pluginManager->registerEvents(new SimpleOverrides($this), $this);
    $pluginManager->registerEvents(new AntiGreifListeners($this), $this);

  }
}
  

«SimpleOverrides.php » находится в отдельной папке, вызываемой "Listeners" , и ее код выглядит следующим образом:

 class SimpleOverrides implements Listener{

private $plguin;

public function __construct(Main $plugin){
    $this->plugin = $plugin;
    $this->plugin->getLogger()->info("SimpleOverrides setup!");
}

public function onPluginCommand(PlayerCommandPreprocessEvent $event){
    $message = $event.getMessage();
    $array = split(' ', $message);
    if(strtolower($array[0]) == "pl" || strtolower($array[0]) == "plugins"){
        $event->setCancelled(true);
        $event->getPlayer()->sendMessage(TextFormat::GREEN . "This server operates using 100% custom plugins!");
    }
  }
}
  

Проблема в том, что в конструкторе он должен быть передан основному классу. Но код выдает a TypeError , потому что он ищет Main.php внутри "Listeners" папки. Как мне заставить его использовать основной класс из основной папки?

Комментарии:

1. Правильна ли эта строка кода: private $plguin; ?

Ответ №1:

 use HubCoreMain;
  

решение состояло в том, чтобы реализовать основной класс из файла hubcore, у меня была опечатка, не позволяющая этому работать с самого начала