设为首页 收藏本站
查看: 707|回复: 0

[经验分享] php学习笔记(路径引用的问题)

[复制链接]

尚未签到

发表于 2017-3-24 12:50:34 | 显示全部楼层 |阅读模式
  

在php中没有包的感念,不向java 那么方便,在引用时如果不注意就会出错,我也是刚学php,在这个问题上遇到了很多问题,在这总结一下php路径问题
  原则:

使用相对路径,但在相对路径中用绝对路径(有点绕,待会儿详解),一是可以保证可移植性,二是可以方便地修改,三是公式化且结构清晰明了,易于扩展。 (------》来自百度知道)。
  在php 中有两种包含 一种有 include和require , 这两种是有点区别的。
  include包含了一个不存在的文件时,会报错然后继续运行;
  require则不然,如果require请求了一个不存在的文件,会抛出严重错误,程序执行中止.
  所以建议使用require;
  废话也不多说,看一个例子 :
DSC0000.jpg

  看实验图,在图中项目下分别有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的很有帮助,供大家一起学习。
  其他文件使用

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-354688-1-1.html 上篇帖子: PHP技巧汇总:提高PHP性能的53个技巧 下篇帖子: PHP基础007: PHP require和require_once的实验和总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表