類的自動加載:遵循PEAR包的命名規(guī)范

2018-11-21 21:15 更新

1.21.1 PhalApi自動加載的機制

首先,PhalApi的自動加載是簡單的;其次,PhalApi不強制只使用我們框架的機制。

有些框架,單單在類文件的自動加載這一塊就弄得非常復(fù)雜,以致開發(fā)同步需要在這些框架添加一些自己的類代碼時,往往不知要怎么引入!甚至明明用引入了卻又不見得生效!

而在PhalApi,我們則是: 簡單、統(tǒng)一、規(guī)范。

1.21.2 PEAR包命名規(guī)范

PEAR包的類文件路徑和類名映射非常簡單,如下圖:

0215
或者查看(里面有很好的代碼風(fēng)格編寫說明): Autoloading Standard

而PhalApi則更簡單,我們暫時還不使用命名空間,所以namespace這一塊省去。例如:

Api_User
Domain_User
Model_User

對應(yīng)以下路徑的文件:

.
|-- Api
|   `-- User.php
|-- Domain
|   `-- User.php
|-- Model
|   `-- User.php

再舉一個模擬的示例,如類Api_Game_User_Equitment對應(yīng)以下文件路徑:

./Api/Game/User/Equitment.php

此外,還需注意區(qū)分大小寫。

1.21.3 掛靠式自動加載

然后在我們準(zhǔn)備了這些類和文件后,我們怎么才能讓這些類被框架所自動加載呢?

我們提供的方式是: 掛靠式自動加載 。

熟悉Linux系統(tǒng)的同學(xué)可能很容易明白,還沒接觸到Linux的同學(xué)也是可以很快理解的。這里稍微說明一下。

所謂的 掛靠 就是把你代碼的目錄放在項目的目錄下(或者其他任何一個地方),隨后簡單地將此目錄添加到自動加載器即可。如上面的:

DI()->loader->addDirs('Demo');

當(dāng)有多個目錄時,可以這樣:

DI()->loader->addDirs(array('Demo', 'Library'));

需要注意的是,上面相對路徑的都需要放置在應(yīng)用項目的目錄API_ROOT下面。如果是單個文件的引入,則可以使用絕對路徑。下面分別簡單說明。

(1)相對路徑的目錄路徑掛靠

通過PhalApi_Loader::addDirs()方式掛靠的路徑,都是強制在目錄API_ROOT下面,即下面的三種方式是等效的(在Linux系統(tǒng)上):

//路徑:API_ROOT/Demo
DI()->loader->addDirs('Demo');

//路徑:API_ROOT/./Demo
DI()->loader->addDirs('./Demo');

//路徑:API_ROOT/Demo
DI()->loader->addDirs('/Demo');

如果需要掛靠的目錄不在項目目錄下,在Linux可以通過軟鏈來解決。

(2)單個文件允許絕對路徑引入

對于單個文件的引入,可以通過PhalApi_Loader::loadFile()來引入。注意以下兩種寫法的區(qū)別:

//路徑:API_ROOT/Demo/Tool.php
DI()->loader->loadFile('Demo/Tool.php');

//路徑:/path/to/Demo/Tool.php
DI()->loader->loadFile('/path/to/Demo/Tool.php');

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號