PHP - 獲取和設定include_path
include_path是PHP中的一個環境變數,在php.ini中初始化設定,類似於JAVA的CLASSPATH和作業系統中的PATH。
例如:有如下一些檔案, /www/index.php /www/includes/config.php /www/includes/functions.php /www/includes/PEAR/PEAR.php /www/includes/PEAR/DB.php /www/includes/PEAR/DB/mysql.php
如果沒有設定include_path變數,index.php需要這樣寫:
- <?php
- include_once '/www/includes/config.php';
- include_once '/www/includes/PEAR/DB.php';
- include_once '/www/includes/PEAR/DB/mysql.php';
- ?>
<?php include_once '/www/includes/config.php'; include_once '/www/includes/PEAR/DB.php'; include_once '/www/includes/PEAR/DB/mysql.php'; ?>
使用上面的引用方式,引用路徑比較長,當引用目錄位置改變時需要大量修改程式碼。使用include_path變數可以簡化上述問題:
- <?php
- set_include_path(/www/includes' . PATH_SEPARATOR . /www/includes/PEAR');
- include_once 'config.php';
- include_once 'DB.php';
- include_once 'DB/mysql.php';
- ?>
<?php set_include_path(/www/includes' . PATH_SEPARATOR . /www/includes/PEAR'); include_once 'config.php'; include_once 'DB.php'; include_once 'DB/mysql.php'; ?>
include_path是PHP的環境變數,因而可以在php.ini設定,每次請求時include_path都會被PHP用php.ini中的值初始化。也可以用程式碼的方式修改include_path值,不過,修改後結果在請求完畢後會自動丟棄,不會帶到下一個請求。因此,每次請求時需要重新設定。
在程式碼中獲取和設定include_path值有如下兩種方式:
方式一:ini_get()和ini_set()方式,此種方式使用於所有PHP版本。
- <?php
- $s = ini_get('include_path');
- ini_set($s . PATH_SEPARATOR . '/www/includes');
- ?>
<?php $s = ini_get('include_path'); ini_set($s . PATH_SEPARATOR . '/www/includes'); ?>
方式二:get_include_path()和set_include_path()方式,此種方式使用於PHP4.3以後的版本。
- <?php
- $s = get_include_path();
- set_include_path($s . PATH_SEPARATOR . '/www/includes');
- ?>
<?php $s = get_include_path(); set_include_path($s . PATH_SEPARATOR . '/www/includes'); ?>