Использовать абсолютный путь для облегчения изменения включаемого пути в будущем? - PullRequest
1 голос
/ 16 апреля 2010

config.php помещен на корневой уровень, этот файл будет включен на любые страницы.

Затем в config.php

<?php
define( 'ROOT_DIR', dirname(__FILE__) );
?>

Так что на всех других страницах из разных каталогов sub / a.php, sub / sub / b.php, когда я хочу включить определенный файл в определенное место, мне просто нужно

include( ROOT_DIR.'/include/functions.php' );

На сервере Windows ROOT_DIR возвращает значение C:/inetpub/vhosts/domain.com

Это хороший / безопасный способ?

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

Есть минусы? Как SEO, или любая другая причина ... Что вы, ребята, думаете.

Ответы [ 3 ]

2 голосов
/ 16 апреля 2010

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

Однако неверно, что этот метод позволяет вам никогда не изменять пути включения. Вам все равно придется изменить путь включения для config.php, поскольку ROOT_DIR явно не определен до тех пор, пока он не будет включен.

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

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

2 голосов
/ 16 апреля 2010

Я прокомментирую, что одним из преимуществ метода, который вы используете (используя абсолютные пути), является то, что PHP не нужно разрешать путь для каждого запроса. Таким образом, вы можете увидеть немного лучшую производительность.

Кроме того, если вы используете PHP 5.3, вы можете просто использовать __DIR__ вместо dirname(__FILE__).

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

0 голосов
/ 16 апреля 2010

Я предлагаю использовать vhosts как таковой ...

C: / inetpub / vhost / account / html = указывает на => domain.com C: / Inetpub / ВХост / счет / includeded_files

define('PATH_INCLUDE','C:/inetpub/vhost/account/included_files');
...