Jump to content
  • 0

Вопрос о функции include(); и модулях


Kichee
 Share

Question

Ребята, у меня такой вопрос:

Если мы выполняем include("filename.php"); мы, фактически, добавляем весь его код, в страницу, которая выполняется.

Рассмотрим ситуацию, когда файл, который мы 'инклюдим' находится в каталоге dir и использует картинку из этого же каталога (путь используется отностильный image.jpg). Инклюдим мы его из каталога выше.

Конечно картинка при этом выводится уже не будет, потому что вызываться она будет из каталога выше dir, а ее там нет и небыло.

Вопрос:

- Какую функцию следует использовать, чтобы получить код, после исполнения "dir/filename.php", чтобы путь к картинке остался в нормальной форме?

Мой вариант реализации - получаем весь код исполнения скрипта при помощи $file=file("dir/filename.php"); а потом через, напимер foreach ($file as $field => $value) {echo $value;}

Но это потребление лишних ресурсов.

Как вы уже наверно поняли я хочу чтобы модули сайта исполнялись независимо от их расположения, чтобы каждый раз не менять в них глобальные переменные. Думаю есть более простое решение, о котором я просто не знаю.

Заранее спасибо.

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0
Как вариант делать для картинок отдельную папку в корне сайте /Img

А в срипте php сделать константу с этим путем. Потом просто подкл. картинки по этой константе.

Нет, я говорю не только о картинках, допустим у нас есть скрипт фотогалереи, содержащий картинки как ее собственного оформления, так и фотки в нее загруженные, допустим мы ее загрузили в папку Gallery отностильно сервера.

Да, можно создать константу относительно пути и использовать ее в скрипте., но что если мы перенесем галерею из папки Gallery в папку Album, нам придется руками менять константу (ну и путь в том файле, где прописываем include)

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

Link to comment
Share on other sites

  • 0

а какая разница - при изменении пути в любом случае придется где-либо менять путь. кроме случая, когда вызываемый скрипт находится в одной директории с вызывающим или выше. т.е. таким образом, чтоб путь можно было описать путем ./, ../../../ итд или $_SERVER['DOCUMENT_ROOT']

Link to comment
Share on other sites

  • 0

Еще как вариант создать отдельный файл со списком всех путей в виде:

define("GALLERY", "твой путь");

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

Здесь же можно указать директории всех картинок, флэшек и т.д.

Link to comment
Share on other sites

  • 0

пять копеек, а совсем хорошо, когда весь сайт построен на абсолютных путях

Kichee, смотри в сторону realpath() и констант, как писал Kiar25, я еще делаю константу SITE_URL и туда строку навроде "http://www.domain.zone/", для полного адреса ко всем файлам снаружи. ни разу такая схема не сбоила

Link to comment
Share on other sites

  • 0

Нет, на счет обсолютного пути все понятно, кстати спасибо за идею с вынисением всех "модулей" и ссылок к ним в отдельный файл, буду использовать)

Тут вопрос был в другом, можно ли совсем избежать include и получить результат выполнения скрипта в его родной папке (хотя даже независимо от папки в которой он лежит). Через file(); потребляется много ресурсов, есть ли альтернативные функции?:)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy