Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
223 views
in Technique[技术] by (71.8m points)

php - Absolute vs. relative paths

If I use absolute paths, I can't move the whole directory to a new location. If I use relative paths, I can't move individual files to new locations.

What's the solution here? Do you set up a config file that holds the root path and go from there? Or do you have a rule like: Never move files around?

I've seen in some projects that people use dirname(FILE). What is the point of that, I mean, why not simply leave it out since the dirname is relative anyway (depending on where the file sits)?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

you should use a config file that will be included in each file first line, for example your app look like this

root / App / Plugins

inside your root dir : app-config.php

if ( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

now, suppose you have to include a plugin file, so

inside your Plugin dir : my-plugin.php

require_once '../../app-config.php';

now everything below this line can use ABSPATH

example do you want to load an image

<img src='".ABSPATH."Public/images/demo.png' alt=''/>

now, the thing is more simple if your app is designed to automatically load some files like

plugin-widget-1.php

so that everything inside this file or any other file loaded by the my-plugin.php file can use the ABSPATH without include each time the app-config.php file.

with this in mind you can have all the short-hand you want into the app-config.php example

define('UPLOAD_PATH', ABSPATH. 'Public/uploads/');
define('IMAGES_PATH', ABSPATH. 'Public/images/');
define('HELPERS_PATH', ABSPATH. 'App/helpers/');
...

so, now that you have all defined, if you need to move a file, let's say one folder forward example:

root / App / Plugins / Utils

just inlucde require_once '../../../app-config.php';

obviously i suppose that you are not changing paths each time =) anyway if you need to do so is always more simple to change one file inclusion instead of hundreds.

hope this make sense to you =)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...