類庫擴(kuò)展

2018-10-19 17:24 更新

添加類庫

框架本身是不帶類庫的,如果需要添加第三方類庫,可以將類庫放置到application/extend(可自定義)目錄下。

在Idea框架中存在3種類庫加載方法

  1. 輔助函數(shù)import()加載,針對(duì)未定義命名空間的類
  2. 自動(dòng)加載方式 ,類需要按規(guī)則定義命名空間
  3. Composer加載

1. 加載沒有使用命名空間的類庫(輔助函數(shù):import()

這兒我們以驗(yàn)證碼類為例,來進(jìn)行演示。
我用來演示的驗(yàn)證碼類是自己開發(fā)的,包含字體文件和類文件。
類文件路徑:application/extend/lib/vcode/ValidateCode.php

  • 首先,我將驗(yàn)證碼類庫文件放置到/System/Libraries,具體目錄結(jié)構(gòu)如下:
/application [應(yīng)用目錄]
 ├─extend--------------------------[應(yīng)用擴(kuò)展目錄]
 | └─lib---------------------------[框架類庫]
 |   └─vcode-----------------------[分頁分頁類庫]
 |     ├─ValidateCode.php ---------[驗(yàn)證碼類]
 |     └─fonts---------------------[字體文件目錄]
  • 文件放置好以后以后,我們進(jìn)行第二步操作,使用框架內(nèi)置輔助函數(shù)import();在控制器User.php`中加載引入剛剛添加的類文件即可:
  • 公共函數(shù):import();供兩個(gè)兩個(gè)參數(shù)介紹如下
函數(shù)名類路徑(包含類名。相對(duì)于extend目錄)
import傳入路徑名

下面是驗(yàn)證碼使用demo:

<?php
namespace app\home\controller;

class Index  extends Common{
    /**
     * 驗(yàn)證碼圖片
     * @return resource 驗(yàn)證碼圖片
     */
    public function vCode(){
        session_start();
        import('lib/vcode/ValidateCode');
        $vCode=new \ValidateCode();
        $vCode->getImage();
        //設(shè)置session
        $_SESSION['vcode']=$vCode->getCode();
    }
}

現(xiàn)在我們?cè)L問URL(這兒演示的是偽靜態(tài)+PATHINFO模式)路徑:http://ServerNameHome/Index/vCode即可得到我們的驗(yàn)證碼圖片輸出

2. 命名空間加載方式

類文件路徑:application/extend/lib/vcode/ValidateCode.php如果類ValidateCode定義了命名空間

<?php
namespace app\extend\lib\vcode;

class ValidateCode
{
}

那么就在這樣來使用驗(yàn)證碼類

<?php
namespace app\home\controller;

class Index  extends Common{
    /**
     * 驗(yàn)證碼圖片
     * @return resource 驗(yàn)證碼圖片
     */
    public function vCode(){
        session_start();
        $vCode=new \app\extend\lib\vcode\ValidateCode();
        $vCode->getImage();
        //設(shè)置session
        $_SESSION['vcode']=$vCode->getCode();
    }
}

如過在配置文件中還自定義了類庫命名空間映射,比如這樣:

'namespace_map_list' => [
        'system' => FRAMEWORK_PATH . 'core',
        'app'    => ROOT_PATH . 'application',
        'lib'    => ROOT_PATH.'application/extend/lib',        //自定義的目錄映射
    ],

那么類ValidateCode的命名空間將這么定義

<?php
namespace lib\vcode;

class ValidateCode
{
}

最后使用驗(yàn)證碼類

<?php
namespace app\home\controller;

class Index  extends Common{
    /**
     * 驗(yàn)證碼圖片
     * @return resource 驗(yàn)證碼圖片
     */
    public function vCode(){
        session_start();
        $vCode=new \lib\vcode\ValidateCode();        //注意這兒
        $vCode->getImage();
        //設(shè)置session
        $_SESSION['vcode']=$vCode->getCode();
    }
}

3.Composer加載在下一章節(jié)介紹

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)