Как я могу сделать определенное имя доступным во всем мире?

У меня есть файл, который определяет имя как это.

<root>/dir1/dir2/file1.php

//directory indicator
define("DI", "../../");

//adding required files
require_once DI . 'lib/Config.php';
require_once DI . 'lib/Common.php';

Это добавляет Config.php а также Common.php правильно.

Теперь, когда я пытаюсь получить DI в Config.php как это

<root>/Config.php

<?php
class Config
{
public $value = DI . 'some_value';
}

Я не могу получить это значение там.

Как я могу сделать DI доступны внутри Config учебный класс ?

РЕДАКТИРОВАТЬ

Реальная папочная иерархия

ROOT--> somefile.php
|__ lib --> config.php
|
|___ dir1
|
|__  dir2
|
|__ file1.php

Мне нужно получить корневой каталог внутри класса, который определен в config.php. то есть мне нужно включить somefile.php от config.php, Я знаю, что могу сделать это просто как

 include '../somefile.php';

Но проблема в том, что config.php содержит класс, который содержит static методы. Таким образом, я могу получить эти методы, как это.

  Config::MethodInsideConfig();

Теперь, когда я пытаюсь это из file1.php, Кажется, что ../somefile.php пытается включить из dir1, Я думаю, что PHP использует file1.phpРасположение для расчета предыдущего каталога. Но мне нужно получить файл из корневого каталога.

0

Решение

Вставьте значение в качестве аргумента в ваш класс __construct () и установите свойство в своем конструкторе

class Config
{
public $value;

public __construct($di) {
$this->value = $di . 'some_value';
}
}

$myConfig = new Config(DI);
0

Другие решения

Почему определение новой константы PHP уже имеет предопределенную постоянную DIR он содержит текущий каталог файлов.

Итак, ваши требования будут выглядеть так:

//adding required files
require_once __DIR__.'/../../'. '/lib/Config.php';
require_once __DIR__.'/../../'. 'lib/Common.php';
  • ИСПОЛЬЗОВАНИЕ INI FILE

Вы можете использовать файл конфигурации (например, config.ini)

[parameteres]
path_app_root="/usr/share/apache/www/my_app";

Затем ваш конфиг как синглтон-класс будет использоваться для анализа INI-файла и получения конфигурации

<?php
class Config
{
public $configs = array();
private static $instance;

private function __construct() {}

public static function getInstance()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
self::$instance->configs = parse_ini_file(__DIR__."/../config.ini");
}

return self::$instance;
}

public function getRootPath()
{

return self::$instance->configs['path_app_root'];
}

public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}

Ваш file1.php будет таким

<?php
//adding required files
require_once '../../lib/Config.php';

echo Config::getInstance()->getRootPath();

Анас

0

По вопросам рекламы [email protected]