Класс не найден при использовании пространства имен - PullRequest
1 голос
/ 13 октября 2019

Я пытаюсь вызвать функцию другого класса, включив класс с пространством имен. Но когда я это делаю, я получаю ошибку

Fatal error: Uncaught Error: Class 'inc\Activate' not found 

Эта ошибка не возникает, когда я включаю класс с require_once вместо пространства имен.

Я сгенерировал папку vendor с помощьюкомпозитора для определения глобального пространства имен

Это мой код

aotoload_psr.php

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'inc\\' => array($baseDir . '/inc'),
);

Activate.php (класс, который будетвключены)

namespace inc;

class Activate
{
    public static function activate()
    {
        flush_rewrite_rules();
    }
}

fahad-plugin.php (где включен класс)

use inc\Activate;
class FahadPlugin
    {
        function activate()
        {
            Activate::activate();
        }

        $fp = new FahadPlugin();
        register_activation_hook(__FILE__, array($fp, 'activate'));
    }

Структура файловой директории

Любая идея, где я делаю неправильно.

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Ваш автозагрузчик не работает, потому что WordPress никогда не активирует его;

Импорт в ваш файл fahad-plugin.php должен исправить это, как показано ниже:

<?php
/**
 * @wordpress-plugin
 * Plugin Name: Fahad-plugin
 * Description: Your plugin description
 * Version:     1.0
 * Author:      Fahad Shaikh
 * Author URI:  https://example.com
*/

require_once __DIR__ . '/vendor/autoload.php';

use inc\Activate;

class FahadPlugin {
  function activate() {
    Activate::activate();
  }
}

$fp = new FahadPlugin();
register_activation_hook(__FILE__, array($fp, 'activate'));

Примечание: WordPress загружает файл bootstrap.php, если нет файла с таким же именем, как у вашего плагина.

0 голосов
/ 13 октября 2019

Как сказал Top-Master, местоположение Activate.php должно быть внутри папки inc. Вторая проблема - вы должны вызывать класс вне класса. Вы вызываете класс FahadPlugin внутри самого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...