PathJoin是用於標準化和連接文件系統路徑的PHP庫。該庫的目的是使與平台和系統目錄分隔符的文件系統路徑更易於使用。
文件路徑歸一化的目的是提供單個一致的文件路徑表示。換句話說,該庫中的歸一化將解決.和..目錄參考,還將多個目錄分離器凝結為一個。這使得在相互比較路徑時避免常見問題變得更加容易。
雖然PHP提供了內置函數realpath() ,但在每種情況下都不可用,因為它可以使用文件系統工作。該庫只需使用字符串處理將路徑歸一化並歸一化。不需要文件或目錄是可讀甚至存在的。
API文檔可在以下網址獲得:http://kit.riimu.net/api/pathjoin/
安裝此庫的最簡單方法是使用作曲家來處理您的依賴項。為了通過作曲家安裝此庫,只需按照以下兩個步驟操作:
通過在項目root中運行作曲家命令行安裝來獲取composer.phar 。
運行安裝腳本後,您應該在項目root中有composer.phar文件,並且可以運行以下命令:
php composer.phar require "riimu/kit-pathjoin:^1.2"
通過作曲家安裝此庫後,您可以通過包括由作曲家在安裝過程中生成的vendor/autoload.php文件加載庫。
如果您已經熟悉如何使用Composer,則可以通過將以下composer.json文件添加到項目中並運行composer install命令來添加庫作為依賴項:
{
"require" : {
"riimu/kit-pathjoin" : " ^1.2 "
}
}如果您不希望使用作曲家加載庫,則可以通過下載最新版本並將src文件夾提取到您的項目中來手動下載庫。然後,您可以包括提供的src/autoload.php文件以加載庫類。
該庫提供了兩種方便的方法, Path::normalize()和Path::join() 。這兩種方法都以非常相似的方式工作。主要區別在於,雖然join()方法可以接受多個路徑加入, normalize()只能接受單個路徑。兩種方法將返回歸一化路徑的結果。
以下示例將包含庫的許多不同用例:
<?php
require ' vendor/autoload.php ' ;
use Riimu Kit PathJoin Path ;
// Both of the following will output 'foo/bar' on Unix and 'foobar' on Windows
echo Path:: normalize ( ' foo/bar ' ) . PHP_EOL ;
echo Path:: join ( ' foo ' , ' bar ' ) . PHP_EOL ;
// The join method accepts multiple arguments or a single array
echo Path:: join ( ' foo ' , ' bar ' , ' baz ' ) . PHP_EOL ; // outputs 'foo/bar/baz'
echo Path:: join ([ ' foo ' , ' bar ' , ' baz ' ]) . PHP_EOL ; // outputs 'foo/bar/baz'
// The '.' and '..' directory references will be resolved in the paths
echo Path:: normalize ( ' foo/./bar/../baz ' ) . PHP_EOL ; // outputs 'foo/baz'
echo Path:: join ([ ' foo/./ ' , ' bar ' , ' ../baz ' ]) . PHP_EOL ; // outputs 'foo/baz'
// Only the first path can denote an absolute path in the join method
echo Path:: join ( ' /foo ' , ' /bar/baz ' ) . PHP_EOL ; // outputs '/foo/bar/baz'
echo Path:: join ( ' foo ' , ' /bar ' ) . PHP_EOL ; // outputs 'foo/bar'
echo Path:: join ( ' foo ' , ' ../bar ' , ' baz ' ) . PHP_EOL ; // outputs 'bar/baz'
echo Path:: join ( '' , ' /bar ' , ' baz ' ) . PHP_EOL ; // outputs 'bar/baz'
// Relative paths can start with a '..', but absolute paths cannot
echo Path:: join ( ' /foo ' , ' ../../bar ' , ' baz ' ) . PHP_EOL ; // outputs '/bar/baz'
echo Path:: join ( ' foo ' , ' ../../bar ' , ' baz ' ) . PHP_EOL ; // outputs '../bar/baz'
// Empty paths will result in a '.'
echo Path:: normalize ( ' foo/.. ' ) . PHP_EOL ;
echo Path:: join ( ' foo ' , ' bar ' , ' ../.. ' ) . PHP_EOL ; Path::normalize()還接受第二個參數$prependDrive ,該$ prependive佔用布爾值並默認為true。在Windows平台上,驅動器字母是絕對路徑的重要組成部分。因此,如果將參數設置為true時,如果絕對路徑不提供一個本身,則該方法將預先將當前工作目錄的驅動字母預先為絕對路徑。
對於Windows系統,下面的示例是正確的,如果工作目錄位於C:驅動器:
<?php
require ' vendor/autoload.php ' ;
use Riimu Kit PathJoin Path ;
echo Path:: normalize ( ' /foo/bar ' ) . PHP_EOL ; // outputs 'C:fooBar'
echo Path:: normalize ( ' D:/foo/bar ' ) . PHP_EOL ; // outputs 'D:fooBar'
echo Path:: normalize ( ' /foo/bar ' , false ) . PHP_EOL ; // outputs 'fooBar' 該圖書館是版權(C)2014-2017 RiikkaKalliomäki。
有關許可證和復制信息,請參見許可證。