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
文件夹。
我有一个 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
文件夹。