In breve, sto cercando di creare un 'eco-sistema' utilizzando WordPress, dove ho un plug-in di base e quindi plug-in aggiuntivi aggiuntivi.WordPress PSR-4 Plugin Names Accessing Un altro plug-in Namespaced
Più in dettaglio, ciascun plug-in aggiuntivo richiede il funzionamento del plug-in principale. Ho raggiunto questo obiettivo utilizzando la codifica standard di WordPress e le pratiche di struttura dei file. Sto rielaborando questo progetto usare per ora namespacing PSR-4, compositore, gazebo e ecc
standard di WordPress Installare
|
|__www
|
|___wp-admin
|
|___wp-content
| |
| |___plugins
| | |
| | |___my-core-plugin
| | | |
| | | |___library
| | | | |
| | | | |___class-post-register.php
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| | |___my-first-addon-plugin
| | | |
| | | |___library
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| | |___my-second-addon-plugin
| | | |
| | | |___library
| | | |
| | | |___vendor
| | | | |
| | | | |___autoload.php
| | | |
| | | |___composer.json
| | | |
| | | |___core.php
| | |
| |___themes
| | |
| | |___my-custom-theme
| |
| wp-includes
Nucleo plug psr4 via compositore
"autoload": {
"psr-4": {
"CorePlugin\\Library\\": "library"
}
}
Esempio di nucleo plug-in di classe
<?php
namespace CorePlugin\library;
class Post_Register {
private __construct() {
// ... code
}
private init() {
}
private register($data) {
// .. code to register a custom post for example.
}
}
primo add-on plug psr4 via compositore
"autoload": {
"psr-4": {
"FirstAddon\\Library\\": "library"
}
}
classe da un add-on plug
Qui di seguito è dove sono confuso. Sto cercando di usare una classe dal plugin di base in uno spazio dei nomi diverso e sto ottenendo l'errore:
Fatal error: Class 'CorePlugin\Library\Post_Register' not found in...
Entrambi i plugin autoload loro rispettivo compositore generare file autoload così ho pensato che sarei in grado di use
i namespace Sono venuto qui per chiedere prima di approfondire questa parte del manuale PHP (http://php.net/manual/en/language.namespaces.php) dove potrei provare il sotto namespace forse.
<?php
namespace FirstAddon;
use CorePlugin\Library\Post_Register;
class First_Addon {
private __construct() {
// ... code
}
private init() {
}
private another_function() {
}
}
Inoltre, sono riluttanti a utilizzare il sub namespacing con staffe a causa, per esempio, in laravel, use
foo \ bar; e use
bar \ pippo; così.
<?php namespace App\Services;
use App\User;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
class Registrar implements RegistrarContract {