Ok, I am creating an admin interface for my custom blog at the url /admin.
Is it possible for me to be able to use the same includes (including autoload), as the roo
Another option that I've used for functions.php in the past is a class autoloader.
//Class Autoloader
spl_autoload_register(function ($className) {
$className = strtolower($className);
$path = "includes/{$className}.php";
if (file_exists($path)) {
require_once($path);
} else {
die("The file {$className}.php could not be found.");
}
});
This works under certain circumstances and has been helpful to me in the past when I don't want to define an absolute $root url.
Easiest way would be to use absolute pathes / URLs.
For the URLs, define a constant/variable somewhere, that points to the root of your application, like :
define('ROOT_URL', 'http://www.example.com');
or
$root_url = 'http://www.example.com';
And use it in every link, like :
<a href="{$root_url}/my-page.php">blah</a>
This way, always OK (and the day you install your project on another server, or in a subdirectory, you only have one constant/variable to modify, and everything still works)
For includes / requires, always use absolute pathes too ; one solution is to use dirname, like this :
include dirname(__FILE__) . '/my_file.php';
include dirname(__FILE__) . '/../my-other-file.php';
__FILE__
is the current file, where you are writing this line ; dirname
gets the path (the full path) to the directory containing that file.
With that, you never have to worry about the relative paths of your files.
Yet another answer would be similar to combining the first two suggestions. You could define the constant:
define('ABSPATH', dirname(__FILE__).'/');
Then, assuming that config.php
needs to be included in many files of the site then you can use the following statement to accomplish this:
include(ABSPATH.'config.php');
Hope this helps.
The best practice for this is to define a 'ABSOLUTE_PATH' constant that contains the directory that everything is located under. After that, you can simply copy and paste everything, because it is defining the 'full' path, which doesn't change from directory to directory.
Example
define("ABS_PATH", $_SERVER['DOCUMENT_ROOT']);
or
define("ABS_PATH", dirname(__FILE__));
// This defines the path as the directory the file is in.
Then at any point you can simply do this to include a file
include(ABS_PATH . "/path/to/file");