Как было предложено, простое решение - создать файл конфигурации (json, xml или php - я буду использовать последний) , который содержит важную информацию, найденную в корне вашего домена, в этомв случае доменного имени:
/ config.php
<?php
define('DS',DIRECTORY_SEPARATOR);
define('ROOT_DIR',__DIR__);
define('INCLUDES',ROOT_DIR.DS.'includes');
define('FUNCTIONS',INCLUDES.DS.'functions');
# Define base domain
define('SITE_URL','//localhost');
Это будет просто объединить путь проекта (если установлен).
/include/functions/asset.php
function asset($path=false)
{
# Check if a project folder is set
$proj = (defined('PROJECT_NAME'))? PROJECT_NAME : '';
# See if the current mode uses SSL
$protocol = (isset($_SERVER['HTTPS']))? 's' : '';
# Create a path (if no project, it will leave "//" so you need to replace that)
$final = str_replace('//','/','/'.trim($proj,'/').'/'.ltrim($path,'/'));
# Send back full url
return "http{$protocol}:".SITE_URL.$final;
}
Это в основном то, что вы будете делать.
/ index.php
<?php
# Include config
require_once(__DIR__.DIRECTORY_SEPARATOR.'config.php');
# Include the asset function
include_once(FUNCTIONS.DS.'asset.php');
# Define the current project. If you are always accessing this,
# then you may want to have it in the config, but if you are doing multiple projects
# you can leave the define in the root of each project file
define('PROJECT_NAME','todo-oop');
# Use asset to write the asset path
echo asset('/partials/css/todo.css');
В нем должно быть написано:
http://localhost/todo-oop/partials/css/todo.css
Если проект не определен:
http://localhost/partials/css/todo.css
Вы также можете изменить SITE_URL
, чтобы включить каталог проекта, если у вас есть доступ только к одному проекту с одиночной конфигурацией:
define('SITE_URL','//localhost/todo-oop');
Как продемонстрировал @Loek, вы можете использоватьфреймворк создает такие пути и тому подобное, или вы можете создавать классы (если вы достаточно уверены в этом) , чтобы делать то, что я демонстрирую.Преимущества использования классов / фреймворков в том, что они будут иметь большую гибкость и динамическое взаимодействие, но для очень простого процесса вы можете использовать эти типы путей, используя приведенную выше методологию.