wordpress - How do I autoload PHP classes? -
i using classes wordpress , trying autoload them in functions.php
file:
spl_autoload_register(function($class) { include('classes/'.$class.'.php'); });
this classes directory looks like:
- classes/
- project/
- application.php
- core.php
- site.php
- helpers.php
- utils/
- helpers.php
- twig.php
- views/
- layout.php
- modules.php
- pages/
- home.php
- project/
each class namespaced based on directory in. example:
$homeclass = new \views\pages\home();
when autoload classes, error:
php warning: include(classes/project\application.php): failed open stream: no such file or directory
obviously backslashes part of namespacing don't work in path. update function replace backslashes forward slashes this:
spl_autoload_register(function($class) { include('classes/'.str_replace("\\", "/", $class).'.php'); });
but seems odd that required. missing something?
registering autoloaders using namespaces means denote directory structure common practice. recommend following psr-4 conventions, if you're far in refactor naming conventions, recommend using directory_separator
constant php decide whether use '/' or '\', windows servers use latter, , linux servers use former.
Comments
Post a Comment