Я знаю, что было задано много похожих вопросов, но я следовал каждому руководству, которое смог найти, и оно все еще не работает для меня.Я не знаю, связано ли это с тем, что он является плагином WordPress, но автозагрузчик не находит мои классы.
В моем плагине я сталкиваюсь с множеством коллизий имен классов.Я знаю, что могу добавить к каждому классу имя плагина, но я чувствую, что было бы легче / чище иметь весь проект в определенном пространстве имен.Я все еще немного новичок в PHP, поэтому, возможно, я думаю, что все это неправильно, но я думаю, что это должно работать.Я понимаю, что есть другие способы заставить это работать, но я хотел бы понять, почему это не работает.Спасибо за любой вклад или помощь, которую вы можете предложить!
Я получаю ошибку:
Fatal error: Class 'DistinguishedSites\Inc\Base\Activate' not found in /home/pluginte/public_html/wp-content/plugins/distinguished-sites/distinguished-sites-plugin.php on line 47
Упрощенная структура каталогов:
/distinguished-sites
- distinguished-sites-plugin.php
- composer.json
- /vendor
- *All vendor files*
- /inc
- /Base
- Activate.php
*etc...*
Файл Activate.php:
<?php
/**
* @package DistinguishedSites
*/
namespace DistinguishedSites\Inc\Base;
class Activate
{
public static function activate() {
$db = new DatabaseApi();
$filter = new PostFilter;
$db->createTable();
$results = $filter->filterPosts();
flush_rewrite_rules();
}
}
Я пытаюсь использовать класс Activate в моём файле Отличительные сайты-plugin.php:
<?php
/**
* @package DistinguishedSites
*/
use \DistinguishedSites\Inc\Base\Activate;
defined( 'ABSPATH' ) or die( 'Hey, what are you doing here? You silly human!' );
// Require autoload file.
if ( file_exists( dirname( __FILE__ ) . '/vendor/autoload.php' ) ) {
require_once dirname( __FILE__ ) . '/vendor/autoload.php';
}
define( 'PLUGIN_PATH', plugin_dir_path( __FILE__ ));
define( 'PLUGIN_URL', plugin_dir_url( __FILE__ ));
define( 'PLUGIN', plugin_basename( __FILE__ ));
// Runs on plugin activation.
function activate_distinguished_sites_plugin() {
Activate::activate();
}
register_activation_hook( __FILE__, 'activate_distinguished_sites_plugin');
// Runs of plugin deactivation.
function deactivate_distinguished_sites_plugin() {
//Deactivate::deactivate();
}
register_deactivation_hook( __FILE__, 'deactivate_distinguished_sites_plugin');
// Initialize core classes of the plugin.
if ( class_exists( 'DistinguishedSites\Init' ) ) {
Init::register_services();
}
composer.json файл:
{
"name": "sno/distinguished-sites",
"description": "Distinguished sites badge submission plugin.",
"type": "project",
"license": "GPL",
"authors": [
{
"name": "noah",
"email": "noah.seichter@snosites.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4": {
"DistinguishedSites\\": "."
}
}
}
autoload_psr4.php file:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'DistinguishedSites\\' => array($baseDir . '/'),
);