PHP如何相对路径

Codenoob

怎么做相对路径?如何使用__dir__

这是我之前的文件结构

public_html
  ├── config
  |    |__config.php
  ├── core
  |    |__init.php
  ├── helper
  |    |__helper.php
  ├── libraries
  |    |__page1.php
  ├── templates
  │   ├── page1template.php
  │
  │__index.php
  │__page1.php

页面过多后。我想整理它们到“ rep”文件夹和“ admin”文件夹。所以我的新文件结构看起来像这样

public_html
  ├── config
  |    |__config.php
  ├── core
  |    |__init.php
  ├── helper
  |    |__helper.php
  ├── libraries
  |    |__page1.php
  ├── templates
  │   ├── page1template.php
  │
  │__index.php
  |
  ├── rep
  |    |__page1.php
  ├── admin
  │   ├── page1.php

问题是,我的要求和包括的仍然是绝对路径。请参阅下面的示例

我的初始化文件

//Start Session
session_start();

//Include Configuration
require_once('config/config.php');

//Helper Function Files
require_once('helpers/system_helper.php');
require_once('helpers/format_helper.php');

//Autoload Classes
function __autoload($class_name){
    require_once('libraries/'.$class_name .'.php');
} 

我的page1.php

 <?php require('core/init.php'); ?>
     //Get Template & Assign Vars
     $template = new Template('templates/rep/page1.php');

如果我在每个路径的前面添加一个“ ../”。那么该页面将正确加载。见下文

require_once('../config/config.php');
require_once('../helpers/system_helper.php');
require_once('../helpers/format_helper.php');
require_once('../libraries/'.$class_name .'.php');
require('../core/init.php'); 
$template = new Template('../templates/rep/page1.php');

但是然后我的index.php会中断,因为index在根文件夹中,因此相对于它的新路径是错误的。我发现了两个与相关问题有关的问题。我怀疑它与用于__dir__替换../有关,但我不知道将其放置在何处。

PHP包含相对路径

PHP是否包含相对于文件或调用代码的路径?

omghai_8782

就我个人而言,如果我确定结构应该是某种方式,我会尝试使包含相对于执行包含的文件。例如,您可以在core / init.php旁边的core / loader.php文件中创建一个文件...然后,如果假设加载器和其他文件之间的相对结构将始终保持不变,那么core / loader.php可能像

<?php

// Get the path of whatever folder is holding the core/config/etc folders
$main_dir=RealPath(DirName(__FILE__).'/../');

require("{$main_dir}/config/config.php");
require("{$main_dir}/helpers/system_helper.php");
// etc

?>

这里的要点是,您现在可以将这组文件夹移动到所需的任何位置(建议:在public_html外部),只要您需要正确的加载器路径,它们仍应加载。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章