From 2aaefbfa54447c37a74aaf126f864fac629e9bd5 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 20 Jun 2018 14:58:09 +0300 Subject: update autoloader to consider namespaces for third party libraries: placed and loaded from vendor/namespace/classpath.php update readability to a newer implementation based on Readability.js (https://github.com/andreskrey/readability.php) add vendor/Psr/Log interface required for the above --- include/autoload.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'include/autoload.php') diff --git a/include/autoload.php b/include/autoload.php index 3ab998b75..2e73a9722 100644 --- a/include/autoload.php +++ b/include/autoload.php @@ -2,12 +2,21 @@ require_once "functions.php"; spl_autoload_register(function($class) { - $class_file = str_replace("_", "/", strtolower(basename($class))); + list ($namespace, $class_name) = explode('\\', $class, 2); - $file = dirname(__FILE__)."/../classes/$class_file.php"; + $root_dir = dirname(__DIR__); // we're in tt-rss/include - if (file_exists($file)) { - require $file; + // 1. third party libraries with namespaces are loaded from vendor/ + // 2. internal tt-rss classes are loaded from classes/ and use special naming logic instead of namespaces + // 3. plugin classes are loaded by PluginHandler from plugins.local/ and plugins/ (TODO: use generic autoloader?) + + if ($namespace && $class_name) { + $class_file = "$root_dir/vendor/$namespace/" . str_replace('\\', '/', $class_name) . ".php"; + } else { + $class_file = "$root_dir/classes/" . str_replace("_", "/", strtolower($class)) . ".php"; } + if (file_exists($class_file)) + include $class_file; + }); -- cgit v1.2.3