php 从两个不同的位置写入文件路径

php write file path from two different location

我有一个 php class 用来管理 write/read/delete 个文件。构造函数接收文件的路径(字符串)。基本上是这样的:

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/writtenFile.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,路径从 class/that 调用 fwrite 开始? (customFile1.php 或 useCustomFileFunction.php 而不是 function1.php 和 function2.php)

function1.php 应该使用 customFile class 和 ../tempDir path.It 是使用 __FILE__ 或 [=17= 的更好方法] 寻址。

所以让我们这样构建项目:

├─ root/
│  ├─ config/
│  │  ├─ config.php
│  ├─ helpers/
│  │  ├─ customFile.php
│  ├─ dir1/
│  │  ├─ function1.php
│  ├─ tempDir/
│  ├─ function2.php
│  ├─ useCustomFileFunction.php

我们可以在 config.php 文件中包含此代码:

<?php

define("TEMP_DIR" , dirname(__DIR__) . "/tempDir/");

并且我们以这种方式将 config.php 包含在 function1.php 中:

require(__DIR__ . "/../config/config.php");

function2.php中这样:

require("config/config.php");

现在您可以使用 TEMP_DIR 常量来寻址 tempDir 文件夹。