Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/huge-hornets-tan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@headstartwp/headstartwp": patch
---

Make headstartwp PSR-4 compliant: add autoload.psr-4 mapping for php-jwt, remove require_once of php-jwt files
3 changes: 2 additions & 1 deletion wp/headless-wp/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@
},
"autoload": {
"psr-4": {
"HeadlessWP\\": "includes/classes/"
"HeadlessWP\\": "includes/classes/",
"HeadlessWP\\JWT\\": "includes/classes/php-jwt/"
}
},
"scripts": {
Expand Down
38 changes: 14 additions & 24 deletions wp/headless-wp/plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,39 +22,29 @@
define( 'HEADLESS_WP_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
define( 'HEADLESS_WP_PLUGIN_INC', HEADLESS_WP_PLUGIN_PATH . 'includes/' );

// Load php-jwt classes.
$jwt_files = [
'BeforeValidException.php',
'ExpiredException.php',
'JWK.php',
'JWT.php',
'SignatureInvalidException.php',
];

foreach ( $jwt_files as $filename ) {
require_once HEADLESS_WP_PLUGIN_PATH . '/includes/classes/php-jwt/' . $filename;
}

// Require Composer autoloader if it exists.
if ( file_exists( HEADLESS_WP_PLUGIN_PATH . '/vendor/autoload.php' ) ) {
require_once HEADLESS_WP_PLUGIN_PATH . 'vendor/autoload.php';
} else {
// PSR-4 map (longest/more-specific prefixes should come first)
$psr4 = [
'HeadlessWP\\JWT\\' => __DIR__ . '/includes/classes/php-jwt/',
'HeadlessWP\\' => __DIR__ . '/includes/classes/',
];
spl_autoload_register(
function ( $the_class ) {
// Project-specific namespace prefix.
$prefix = 'HeadlessWP\\';
// Base directory for the namespace prefix.
$base_dir = __DIR__ . '/includes/classes/';
// Does the class use the namespace prefix?
function ( $the_class ) use ( $psr4 ) {
foreach ( $psr4 as $prefix => $base_dir ) {
$len = strlen( $prefix );
if ( strncmp( $prefix, $the_class, $len ) !== 0 ) {
return;
}
if ( strncmp( $prefix, $the_class, $len ) !== 0 ) {
continue;
}
$relative_class = substr( $the_class, $len );
$file = $base_dir . str_replace( '\\', '/', $relative_class ) . '.php';
// If the file exists, require it.
if ( file_exists( $file ) ) {
require $file;
if ( file_exists( $file ) ) {
require $file;
return;
}
}
}
);
Expand Down
Loading