国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php中require_once()函數相對目錄要謹慎

2024-09-04 11:47:52
字體:
來源:轉載
供稿:網友

談到了使用require_once 仍然告訴說類被重定義的問題,于是想起了前幾天自己遇到的現象,在這里和大家說一下,今天才想起調查具體原因,如果大家不說的話就快忘了,看來自己凡事果然不經大腦,大腦的二級緩存,及內存,甚至是硬盤都小的可憐。

假設有如下三個文件,c.php a.php b.php 對應的存放目錄為:localhost/localhost/ localhost/demo

  1. c.php 
  2. require_once("a.php"); 
  3. require_once("demo/b.php"); 
  4. B::demo();a.php 
  5. class A 

b.php的內容比較有意思,因為它自己要繼承 CLASS A 所以自己把a.php也引入進去了,代碼如下:

  1. require_once("../a.php"); 
  2. class B extends A 
  3.     public static function demo() 
  4.     { 
  5.     echo "xx"
  6.     } 

執行localhost/c.php 系統報錯,報錯信息如下

Warning: require_once(../a.php) [function.require-once]: failed to open stream: No such file or directory in F:wwwdemob.php on line 2

Fatal error: require_once() [function.require]: Failed opening required '../a.php' (include_path='.;C:php5pear') in F:wwwdemob.php on line 2但是,驚奇的發現,如果去掉b.php里面的require_once語句,執行正常,那么一定是require_once語句定義多了嗎?原因就是Class A重定義了兩次?可是不會啊。如果我只在c.php里面加require_once(‘a.php’);這條語句,哪怕我寫兩遍也是沒錯的,那到底是咋回事呢?

原因就是,b.php定義的目錄和c.php執行文件的目錄層級不一致,導致在c.php里面require_once語句有兩條。使其相當于

  1. require_once("a.php"); 
  2. require_once("../a.php"); 
  3. class B extends A 
  4.     public static function demo() 
  5.     { 
  6.     echo "xx"
  7.     } 
  8. B::demo(); 

原因找到了,因為在c.php里面,其相對目錄 “..”就是 c.php的上一層了,導致文件找不到報錯。

所以,我們的結論是,在 PHP 里面,使用require_once的時候,存在不同層級關系,且有相對目錄的使用那么一定要謹慎,小心。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合山市| 平昌县| 永年县| 康平县| 沅陵县| 武城县| 皮山县| 尚义县| 松滋市| 安龙县| 邹城市| 温州市| 黄浦区| 新蔡县| 荆门市| 左权县| 丰原市| 盐边县| 增城市| 四平市| 伊川县| 班戈县| 耿马| 永福县| 永和县| 余江县| 商南县| 宁波市| 滁州市| 卫辉市| 英德市| 扎鲁特旗| 荥阳市| 泰来县| 瓦房店市| 迁西县| 资溪县| 那曲县| 临夏市| 阿鲁科尔沁旗| 新郑市|