Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путь к своей библиотеке 
:(
    Опции темы
<Spawn>
Дата 20.1.2005, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Писал, писал тут свою библиотеку и вдруг решил иерархически распределить скопившуюсю кучу файлов по поддиректориям. И сразу же наткнулся на такую проблему - при подключении нескольких файлов из разных директорий и при использовании относительных путей, эти самые пути считаются от директории, к которой был произведен запрос. То есть относительные пути вида "../../../bla.php" тут не как не пойдут. То есть выход только в абсолютных путях?
Пришла в голову такая мысль - можно ли как нить создать глобальную PHP переменную(типа $_SERVER["DOCUMENT_ROOT"])? Но тут же появилась другая мысль - а если я свою либу буду ставить на хостинг, то вряд ли хостер захочет эту переменную заводить(я так понимаю тут нужно в каких то PHP файлах покопаться?).
Что то я уже не знаю, что делать. Кто сталкивался с такой проблемой, подскажите, пожалуйсто, как из нее выйтиsmile Может есть какие альтернативные варианты?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
IZ@TOP
Дата 20.1.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



<Spawn>, завести конф. файл, в котором будут прописаны пути ко всем либам, и соответственно подключать только его, брать из него пути, и подключать далее то что необходимо. Можешь запихнуть в папку которая указана в найтроках твоего РНР дериктивы include_path - при подключении РНР будет сам искать в этой директории.

Вот по первому варианту:

Код

<?php
# @file library.conf.php

define('LibraryRootPath', dirname(__FILE__).'/');
// Путь к корню библиотеки находится в этой константе.

define('DBDriversPath', LibraryRootPath.'db/');
// ... ну и т.п.

define('DBDriverMySQL', DBDriversPath.'mysql.driver.php');
// ...

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
<Spawn>
Дата 20.1.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



IZ@TOP
1)Да, первый вариант был бы хорош, но тут, по моему, будет та же проблема. Сморти, допустим есть такого рода директории(директории выделены жирным):

oop_direct
config.inc
...
----data_base
----custom_connection.php
----....
-------oracle
-------....
-------mysql
-------mysql.custom_connection.php
-------mysql.connection.php
-------mysql.pconnection.php
-------mysql.custom_query.php
-------....


тогда, если я в mysql.custom_connection.php буду подключать "../../confing.inc" и через него "oop_direct/data_base/custom_connection.php", а в custom_connection.php, в свою очередь, будет подключаться "../config.php", то будет ошибка, так как в custom_connection.php путь относительный, и он будет считаться от папки mysql. Или я чего то не понял?

Таким же образом я не могу задать явный путь к своей либе(типа "include(oop_direct/config.inc)") - я ведь не знаю в какой папке в конечном счете она будет лежать!!

2) Пихать в include_path это кончено хорошо, но не думаю, что хостер это разрешит.

Это сообщение отредактировал(а) <Spawn> - 20.1.2005, 17:12


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
IZ@TOP
Дата 21.1.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата
1)Да, первый вариант был бы хорош, но тут, по моему, будет та же проблема.


Думаю эта проблема надуманная. Создаем константы, как в примере выше, и обращаемся через них. Вот смотри, есть у нас константа определенная ф файле config.php
Код
define('LibraryRootPath', dirname(__FILE__));


Эта константа будет содержать полный путь к папке oop_direct, например
Цитата
root/home/www/example.com/public_html


Добавлено @ 15:11
Цитата
2) Пихать в include_path это кончено хорошо, но не думаю, что хостер это разрешит.

Я вроде где-то слышал что можно через .htaccess устанавливать опции РНР. Примерно так:
Цитата
php_value include_path = your/path/to/lib/dir/



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sattu
Дата 21.1.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 7.8.2002
Где: Західна Україна

Репутация: 3
Всего: 4



Цитата
php_value include_path = your/path/to/lib/dir/


php_value include_path "path/to/your/lib/"

прописываешь в .htaccess

Это сообщение отредактировал(а) Sattu - 21.1.2005, 15:54
--------------------
тссссс.... «ЖЖ»
PM WWW ICQ AOL   Вверх
<Spawn>
Дата 23.1.2005, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Спасибоsmile


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.