我有一个php类用于管理写/读/删除文件。构造函数接收文件的路径(字符串(。基本上类似于:
class customFile{
public function __construct($path){
$this->path=$path;
}
public function write($content){
//use fopen and fwrite to write content
}
public function read(){
//use fopen and fgets to read content
}
public function delete(){
//use unlink to delete the file
}
}
我还有这个目录树
├─ root/
│ ├─ helpers/
│ │ ├─ customFile.php
│ ├─ dir1/
│ │ ├─ function1.php
│ ├─ tempDir/
│ ├─ function2.php
│ ├─ useCustomFileFunction.php
非常重要的一点是,useCustomFileFunction.php负责在tempDir中写入文件,这样函数就可以创建一个路径如下的customFile对象"tempDir/"+someName(例如"./tempDir/writentFile.txt"(.
function1.php和function2.php都使用某个文件名调用useCustomFileFunction(写入一些文件(,但当从function1.php调用函数时,结果是(不正确(:
├─ root/
│ ├─ helpers/
│ │ ├─ customFile.php
│ ├─ dir1/
│ │ ├─ function1.php
│ │ ├─ tempDir/
│ │ │ ├─ writtenFile.txt
│ ├─ tempDir/
│ ├─ function2.php
│ ├─ useCustomFileFunction.php
当从function2.php调用时,结果是(正确的(:
├─ root/
│ ├─ helpers/
│ │ ├─ customFile.php
│ ├─ dir1/
│ │ ├─ function1.php
│ ├─ tempDir/
│ │ ├─ writtenFile.txt
│ ├─ function2.php
│ ├─ useCustomFileFunction.php
所以问题是:有没有办法告诉fwrite,路径从调用fwrite的类开始?(customFile1.php或使用CustomFileFunction.php而不是function1.php和function2.php(
function1.php应使用带有../tempDir
路径的customFile
类。使用__FILE__
或__DIR__
进行寻址是一种更好的方式。
因此,让我们这样构建项目:
├─ root/
│ ├─ config/
│ │ ├─ config.php
│ ├─ helpers/
│ │ ├─ customFile.php
│ ├─ dir1/
│ │ ├─ function1.php
│ ├─ tempDir/
│ ├─ function2.php
│ ├─ useCustomFileFunction.php
我们可以在config.php
文件中有这个代码:
<?php
define("TEMP_DIR" , dirname(__DIR__) . "/tempDir/");
我们在function1.php
中以这种方式包含config.php:
require(__DIR__ . "/../config/config.php");
在function2.php
:中
require("config/config.php");
现在,您可以使用TEMP_DIR
常量来寻址tempDir
文件夹。