【发布时间】:2019-11-30 23:10:59
【问题描述】:
假设我有这个目录结构:
myApp
|____files
|
|__myFolder
| |___script1.php
|
|__script2.php
|___myClass.php
script1.php 和 script2.php 是相同的,它们所做的只是实例化 myClass,将文件放入 files 文件夹,然后打印出指向该文件的 HTML 锚链接。
//script1.php and script2.php:
/*require myClass*/
$myClass = new myClass();
$myClass->copyFile();
$link = $myClass->retHref();
echo '<a href="'.$link.'">Click here</a>
目前我在 myClass.php 中这样做,以获取绝对路径和 href:
//myClass.php
class myClass{
public function copyFile()
{
$absPath = dirname(__FILE__).'/files/file.txt';
//code to copy the file
}
public function retHref()
{
return $_SERVER['HTTP_REFERER'].'/files/file.txt';
}
}
这是解决这个问题的最佳方法,还是有更好的方法
a) 获取文件路径
和
b) 创建网页链接
从一个类内部,当我不知道实例化该类并调用其函数的脚本将位于何处时?
【问题讨论】:
-
$_SERVER['HTTP_REFERER']不可靠,但使用起来非常简单。不幸的是,客户端总是有可能没有设置Referer标头。因此,如果结果不是很重要,并且您有时没有链接也不介意,那么这种方法很好。但在任何需要该链接可用且准确的情况下,我都会遵循 atymic 答案中的建议。
标签: php webserver relative-path absolute-path fileserver