Корневой каталог класса PHP - PullRequest
0 голосов
/ 08 января 2011

Кто-нибудь знает, как создать корневой каталог php класса , как это делает WordPress?это должно быть похоже на WordPress.
у меня есть несколько папок

*include:
 -header.php
 -footer.php
*images
*forms
 -index.php

проблема в том, что когда я использую php header изображение не связывается должным образом, есть ли способ его решить.
Я прочитал какую-то статью для использования $_SERVER['DOCUMENT_ROOT']. и как мне применить ее глобально?

Ответы [ 4 ]

1 голос
/ 08 января 2011

Не уверен, что это во многом связано с тем, что вы ищете, но на всякий случай это помогает: на большинстве веб-сайтов, которые я делаю с нуля, я включаю необходимые файлы php в разные папки (в зависимости от языка, раздела и т. Д.) Спростой код.Из URL я получаю язык и переменные раздела и страницы:

$root = $_SERVER['DOCUMENT_ROOT'];
$include_string = ":/$root:/$root/$lang:/$root/$lang/$section:/$root/$lang/$section/$page";
ini_set("include_path", ".:../:$include_string");

Мой код немного сложнее, потому что есть еще несколько переменных и общих папок, но это точно так же, как с некоторыми цикламии условия.

1 голос
/ 08 января 2011

Вы должны определить include_path.include_path работает как $PATH в Windows и UNIX.Когда вы запрашиваете файл (с помощью require или include), PHP попытается найти его в текущем каталоге.Если он не найден, он начнет пытаться использовать каталоги, определенные в include_path.

include_path - это переменная среды PHP.ini, так что вы можете изменить ее в своем основном файле php.ini.htaccess, используя php_value, или время выполнения, используя set_inclue_path.

Когда вы добавили, например, папку class, выможете запустить require('class/foo.php'); в любом из файлов вашего проекта, и он найдет вашу глобальную папку классов, только если у вас нет другой папки классов там.

Удачи!

1 голос
/ 08 января 2011

Наименее странный способ, которым мне удалось это сделать:

  1. Добавить корень приложения (часто $_SERVER[DOCUMENT_ROOT]) в include_path (это легко сделать в php.ini, конфигурации apache иливремя выполнения с set_include_path)
  2. определяет функцию __autoload для require "classes/{$classname}.class.php"

Возможно, вам потребуется сделать имена файлов строчными;я забываю, передается ли __autoload имя класса в нижнем регистре, но мне кажется, что я помню проблемы с этим.

0 голосов
/ 08 января 2011

$_SERVER['DOCUMENT_ROOT'] будет работать глобально.

$_SERVER - это один из PHP суперглобальных .

...