一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - CodeIgniter輔助之第三方類庫third_party用法分析

CodeIgniter輔助之第三方類庫third_party用法分析

2020-12-17 15:55老彭 PHP教程

這篇文章主要介紹了CodeIgniter輔助之第三方類庫third_party用法,以CI集成Twig模版為例分析了CodeIgniter集成第三方類庫的實現步驟與相關技巧,需要的朋友可以參考下

本文實例分析了CodeIgniter輔助之第三方類庫third_party用法。分享給大家供大家參考,具體如下:

third_party用來存放系統中引入的第三方類庫,類庫通常提供的功能比較豐富,相應的學習成本也要高些,系統中能用到功能有限,所以建議在引入類庫時進行適當的封裝,讓系統中更方便使用,其他人使用時只需關注擴展的方法而無法關注具體的實現。以CI集成Twig模版為例吧。

首先需要下載Twig類庫,并放在third_party中,然后在libraries中進行一次封裝,示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require APPPATH.'third_party/Twig/Autoloader.php';
/**
 * Twig模版引擎
 *
 */
class Twig
{
  public $twig;
  public $config;
  private $data = array();
  /**
   * 讀取配置文件twig.php并初始化設置
   *
   */
  public function __construct($config)
  {
    $config_default = array(
      'cache_dir' => false,
      'debug' => false,
      'auto_reload' => true,
      'extension' => '.tpl',
    );
    $this->config = array_merge($config_default, $config);
    Twig_Autoloader::register ();
    $loader = new Twig_Loader_Filesystem ($this->config['template_dir']);
    $this->twig = new Twig_Environment ($loader, array (
        'cache' => $this->config['cache_dir'],
        'debug' => $this->config['debug'],
        'auto_reload' => $this->config['auto_reload'],
    ) );
    $CI = & get_instance ();
    $CI->load->helper(array('url'));
    $this->twig->addFunction(new Twig_SimpleFunction('site_url', 'site_url'));
    $this->twig->addFunction(new Twig_SimpleFunction('base_url', 'base_url'));
  }
  /**
   * 給變量賦值
   *
   * @param string|array $var
   * @param string $value
   */
  public function assign($var, $value = NULL)
  {
    if(is_array($var)) {
      foreach($val as $key => $val) {
        $this->data[$key] = $val;
      }
    } else {
      $this->data[$var] = $value;
    }
  }
  /**
   * 模版渲染
   *
   * @param string $template 模板名
   * @param array $data 變量數組
   * @param string $return true返回 false直接輸出頁面
   * @return string
   */
  public function render($template, $data = array(), $return = FALSE)
  {
    $template = $this->twig->loadTemplate ( $this->getTemplateName($template) );
    $data = array_merge($this->data, $data);
    if ($return === TRUE) {
      return $template->render ( $data );
    } else {
      return $template->display ( $data );
    }
  }
  /**
   * 獲取模版名
   *
   * @param string $template
   */
  public function getTemplateName($template)
  {
    $default_ext_len = strlen($this->config['extension']);
    if(substr($template, -$default_ext_len) != $this->config['extension']) {
      $template .= $this->config['extension'];
    }
    return $template;
  }
  /**
   * 字符串渲染
   *
   * @param string $string 需要渲染的字符串
   * @param array $data 變量數組
   * @param string $return true返回 false直接輸出頁面
   * @return string
   */
  public function parse($string, $data = array(), $return = FALSE)
  {
    $string = $this->twig->loadTemplate ( $string );
    $data = array_merge($this->data, $data);
    if ($return === TRUE) {
      return $string->render ( $data );
    } else {
      return $string->display ( $data );
    }
  }
}
/* End of file Twig.php */
/* Location: ./application/libraries/Twig.php */

模版的操作通常有一些配置的信息,這里通過config下的twig.php進行配置,通過CI load library的方式加載時,與類名同名的配置文件存在時,會自動以數組的方式將參數傳入類的構造函數。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// 默認擴展名
$config['extension'] = ".tpl";
// 默認模版路勁
$config['template_dir'] = APPPATH . "views/";
// 緩存目錄
$config['cache_dir'] = APPPATH . "cache/twig/";
// 是否開啟調試模式
$config['debug'] = false;
// 自動刷新
$config['auto_reload'] = true;
/* End of file twig.php */
/* Location: ./application/config/twig.php */

為了加載base_url site_url等函數到模版,類與CI產生了依賴,分離開可能更好,比如在serice中進行一次封裝,增加一些自定義函數等,這樣其他地方、其他系統也就很方便復用該類了。

希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月天黄网 | 福利片福利一区二区三区 | 午夜免费无码福利视频麻豆 | 国产精品久久久久久久久ktv | 欧亚专线欧洲m码可遇不可求 | 人与动人物aaaa | 久久精品亚洲牛牛影视 | 国产自拍啪啪 | 先锋资源久久 | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 动漫肉在线观看 | 亚洲国产区男人本色在线观看欧美 | gay中国 | 深夜网站在线观看 | 欧美日韩一二三区免费视频观看 | 亚洲男人的天堂视频 | 国产在线观看福利片 | 非洲黑人女bbwxxxx | 国产精品一在线观看 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 四虎4hu永久免费 | 2020韩国r级理论片在线观看 | 欧美xxxxx九色视频免费观看 | julia ann黑人巨大 | 国产精品1区2区 | 51国产午夜精品免费视频 | 亚欧洲乱码视频一二三区 | 日本在线视频播放 | ckinese中国男同gay男男 | 久久免费国产 | 99免费精品视频 | 波多野结衣两女调教 | 亚洲黄色片免费看 | 99久久久久国产精品免费 | 国产精品边做边接电话在线观看 | 色婷婷狠狠 | 91久久国产成人免费观看资源 | 亚洲欧美一级夜夜爽w | 精品一区二区三区高清免费不卡 | 国产成人亚洲精品一区二区在线看 | 西西人体大胆77777视频 |