Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Можно ли как-то внутри класса узнать директорию файла, в которой создан объект класса?
Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Подскажите, пожалуйста, можно ли из класса как-то узнавать директорию файла, в которой создан объект класса? или это нужно только передавать.
Поясню. Мне внутри класса нужно сделать require_once - но объекты будут созданы в разных местах, и хотелось бы указывать директорию относительно их...
Сейчас я организовал это через метод setDir в который я передаю __DIR__ - можно ли это сделать иначе?
Мелкий
Отправлено: 13 Мая, 2011 - 13:06:37
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Лучше ознакомьтесь с такой удобной штукой как __autoload и адресовать классы по чёткой иерархии.
----- PostgreSQL DBA
Stierus
Отправлено: 13 Мая, 2011 - 13:18:54
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
InviS, опиши задачу ... твое решение поставленной задачи (иклуд разных вариантов одноименных классов из разных директорий, инклуд еще и внутри классов, причем тоже зависящий от директорий) - явное костыляние, уже видно, что ты получишь немаленькую кучку проблем с этим.
InviS
Отправлено: 13 Мая, 2011 - 13:27:42
Гость
Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Задача:
У меня есть header и footer для страниц (хранятся в отдельном файле)
И есть класс, который формирует странички.
Формирование происходит через ob_start() и ob_get_clean() - после чего все что было "заинклужено" выводится в нужное место.
Вот я хотел избавиться от этого ненужного передавания __DIR__.
В принципе, если я буду добавлять в include_path не просто каталоги, а каталоги с полным путем относительно __DIR__ то это, по-видимому, решит мою проблему и мне не нужно будет передавать даже директории.
И мне было интересно, можно ли в самом классе сделать процедуру, которая узнает директорию файла, в которой был создан объект этого класса.. Вот...
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
обычно ориентируются на рутовую директорию, иногда на текущую директорию (директорию, в которой лежит сам файл) - для этого используют dirname(__FILE__) (Добавление)
В любом случае должен быть объект, содержащий конфигурационную информацию (пути к картинкам, урлы, вот такой путь к директории вьюх, возможно, параметры для соединений с бд, настройкой дебага и тд) такие вещи не передаются в параметрах, а берутся из одного общего места на всем сайте.
InviS
Отправлено: 13 Мая, 2011 - 13:50:22
Гость
Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Но это как бы библиотека.. я не знаю куда я ее могу засунуть)) ну или не хочу к этому привязываться. __FILE__ вернет мне имя файла... И это будет вместе с каталогом... А не известно где оно все лежит относительно файла index.php
И мне хотелось бы это узнавать... Но по ходу нельзя так)
Stierus
Отправлено: 13 Мая, 2011 - 14:51:41
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
dirname(__FILE__) вернет тебе полный путь к директории, в которой лежит текущий файл, запускаешь его в индексе, результат заносишь в конфиг-класс и дальше пользуешься отовсюду (ты же знаешь структуру своих каталогов, сможешь добавить необходимую часть пути к директории с шаблонами к полному пути к рутовой директории)
InviS
Отправлено: 13 Мая, 2011 - 14:54:44
Гость
Покинул форум
Сообщений всего: 107
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
Stierus, конфиг-класс.. Хм, это интересно =) Спасибо, попробую так хранить.
А что вы имели в виду под "заносишь в конфиг-класс" - каким образом этол лучше всего делать?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.