在php中没有包的感念,不向java 那么方便,在引用时如果不注意就会出错,我也是刚学php,在这个问题上遇到了很多问题,在这总结一下php路径问题
原则:
使用相对路径,但在相对路径中用绝对路径(有点绕,待会儿详解),一是可以保证可移植性,二是可以方便地修改,三是公式化且结构清晰明了,易于扩展。 (------》来自百度知道)。
在php 中有两种包含 一种有 include和require , 这两种是有点区别的。
include包含了一个不存在的文件时,会报错然后继续运行;
require则不然,如果require请求了一个不存在的文件,会抛出严重错误,程序执行中止.
所以建议使用require;
废话也不多说,看一个例子 :
看实验图,在图中项目下分别有aa bb ee 三个同级目录和一个index.php文件,在bb下又有cc目录,cc下又有dd目录和cc.php ccc.php两个文件,同样dd下也包含一个dd.php文件。凡是上层对下层均属上级引用.
例如:index.php对于所有文件的引用:
cc .php对dd.php的引用:
ee.php对dd.php的引用:
大家仔细看一下目录结构,便会发现这三种引用虽然同属于上级引用,但它们又不完全相同,我把它分成两种情况:即在上级引用中存在两种引用情况:1.从属的上级引用(类如cc.php对dd.php,,因为这两个文件同属于cc目录)2.非从属的上级引用(类如index.php对于所有文件的引用和ee.php对dd.php的引用都属于这种情况因为它们与被引用的文件并没有一个共同的父目录,在能相对于站点根目录).
对于从属上级引用:
以下是在cc.php对dd.php的引用
require('dd/dd.php');
对于非从属上级引用:
以下是在ee.php中对cc.php的引用
require('../bb/cc/cc.php');
以上所说的是上级引用,下面我们来了解一下下级引用!同理下层对上层的引用都属于下级引用,同样分成从属与非从属两类,从属下级引用相对路径以它们的父目录为根目录,例如:
ttt.php对bbff.php的引用就属于这种情况:require('../bb/cc/bbff.php');
非从属的下级引用却是以网站的根目录为准的,例如:
ccc.php对ee.php的引用: require('../../ee/ee.php');
以上是下级引用的介绍,最后我们来看一下平级引用或者叫同级引用,其实同级引用也是分为这两种情况:从属同级引与非从属同级引用
从属同级引用很简单:即在同一个目录下的两个文件的引用
例如:在dd.php中引用ttt.php require('ttt.php');
非从属同级引用:即不在同一个目录下(没有共同的父目录,只有以网站目站为父目录的情况),但是级别是相同的两个文件的引用,例如:
在aa.php在引用ee.php require('../ee/ee.php');
以上是三种类型不同情况下的引用,另外还有涉及到嵌套引用的问题
比如:
ff.php引用dd.php,而dd.php又引用的gf.php,这种情况,本来dd.php 引用gf.php属于下级引用中的非从属引用,写法是这样的:require('../../../ee/gf.php');而ff.php引用dd.php属于上级引用中的从属引用,写法是这样的:require('./cc/dd/dd.php'); 可是你会发现在ff.php中无法找到gf.php文件,那该如何写呢?我告诉你应该在dd.php中这样写:require('../ee/gf.php');只有这样写就正确了,为什么呢?因为在涉及到嵌套引用的时候被引用文件的相对路径要以最终的引用文件为准!
简而言之:
其实很简单的,你用你的web根目录做根目录.不管你怎么定,你文件肯定有一个全部都要包含的文件的,比如有的叫global.php,有的叫common.php
假如这个文件放在根目录
wwwroot/global.php
里面第一行你加个chdir(dirname(__FILE__)); //切换到global.php所在目录就是根目录
require "../../../global.php";
require "aa/aa.php";
require "bb/bb/cc.php";
//这样就行了,因为你的global.php已经把路径切换到wwwroot了,你不用像很多人那么麻烦
define('ROOT_PATH',dirname(__FILE__));
require ROOT_PATH.....
以上是我在chinaz找到的例子 感觉写的不错 ,对于刚接触php的很有帮助,供大家一起学习。
其他文件使用
- 大小: 10.3 KB
分享到:
相关推荐
从给定的文件信息中,我们可以提炼出一系列与PHP学习相关的知识点,涵盖了基本的调试技巧、错误处理策略、变量管理、以及PHP的工作流程等。以下是对这些知识点的详细阐述: ### PHP调试技巧 #### 输出调试 1. **...
### PHP的变量与常量详解 #### 变量的基础概念 在PHP中,变量是用于存储数据值的容器。PHP是一种弱类型语言,这意味着你无需声明...通过本篇学习笔记,希望能帮助初学者深入理解并熟练运用PHP的变量和常量管理机制。
在自学习PHP的过程中,理解其基本语法是非常重要的第一步。PHP的输出主要通过`echo`命令,可以用来显示字符串。字符串的拼接可以使用双引号或单引号,双引号允许直接解析变量,而单引号则不会。 变量是PHP中存储...
- **生产环境**:通常设置为 `On`,并指定日志文件路径。 - 示例: ```php log_errors = On error_log = /path/to/logfile ``` ### 3. 错误抛出和处理 #### 3.1 `trigger_error` - 触发一个用户自定义的错误。...
本篇笔记详细梳理了SMARTY的关键概念、配置方法以及各种功能的使用。 首先,SMARTY的重要特性在于其以变量为中心,通过变量来传递数据。它具有快速解析、一次性模板解析、模板更新后自动重解析、自定义定界符、支持...
- `__FILE__`:当前文件的完整路径和文件名。 - `__LINE__`:当前执行的行号。 - `__FUNCTION__`:当前函数的名称。 - `__CLASS__`:当前类的名称。 - `__TRAIT__`:当前trait的名称。 #### 七、数据类型 1. ...
【PHP学习笔记汇总】 在PHP编程中,遵循良好的编码规范是非常重要的,这有助于提高代码的可读性和可维护性。本文将围绕PHP的学习要点进行详细阐述,包括命名规则、语言结构、预定义常量、运行环境检测、大小写敏感...
### Java学习笔记要点 #### 一、Java环境搭建与配置 **1.1 下载官方JDK** - **官网**: [http://www.oracle.com/technetwork/java/index.html](http://www.oracle.com/technetwork/java/index.html) - **步骤**: ...
### PHP基础语法知识笔记 #### 第一节:变量与编码设置 **1. 设置UTF-8编码** 在开发PHP程序时,为了确保浏览器能够正确地解析文件中的文本内容,通常会在页面顶部设置HTTP头来指定编码方式。例如,设置为UTF-8...
### 韩顺平PHP从入门到精通笔记-149讲完整知识点解析 ... ... ...这些标记构成了网页的基础结构。...这些知识点对于初学者来说非常重要,能够帮助他们快速掌握HTML的基础知识,并为进一步学习PHP打下坚实的基础。
下面是针对Laravel 5学习笔记中提到的几个重点内容的知识点解析: 1. 动态设置缓存引擎 在Laravel 5中,可以通过编程的方式动态改变应用程序的默认缓存驱动。这一过程涉及到了对配置文件的修改以及对Laravel服务...
MongoDB是一种流行的开源文档型数据库,属于NoSQL数据库家族,其设计目标是处理大量数据的同时提供高可用性和可扩展性。...对于初学者来说,这是一条有效的学习路径,有助于快速理解和应用MongoDB。
学习和掌握变量与常量的使用,对于编写高效、可靠的PHP代码至关重要。本文档将详细介绍PHP中的变量和常量概念、定义方法、使用规则以及它们之间的区别。 首先,我们来了解PHP中的变量。在PHP中,变量是一种用于存储...
3. **资源文件引用问题**:CSS、JavaScript和图片的引用可能会遇到问题。一种解决方案是确保正确使用`__PUBLIC__`魔术常量来引用公共目录。如果直接在`index.php`或`index.html`中引用资源,而其他页面无法访问,则...
index.php中的代码逻辑确保了在命令行模式(CLI)下运行时,能够正确地更改工作目录至index.php文件所在的目录,这是为了处理命令行模式下的路径问题。 CI框架在index.php中还设置了多个常量来表示框架的关键路径。...
在处理用户输入时,应始终注意安全问题,如过滤非法数据、防止SQL注入和XSS攻击等。使用`filter_var`函数或者`htmlspecialchars`函数对输入进行验证和清理是最佳实践。同时,为了提高安全性,PHP 7.2及更高版本默认...
在上述代码中,`__DIR__`是当前执行脚本所在的目录,`/path/to/views`是视图文件存放的相对路径,而`courier`是包的名称。 接下来,需要将组件中的配置文件发布到项目中。这可以通过Artisan命令行工具来完成。...