【问题标题】:Load external library in codeigniter在 codeigniter 中加载外部库
【发布时间】:2017-07-10 10:29:35
【问题描述】:

如何访问 getid3 类并在我的控制器中使用它?

project
 /application
 /controller
 /libraries
    /getID3
       /getid3
          getid3.php
 /model
 /views   

【问题讨论】:

  • 检查this
  • getid3.php 的代码是用 codeigniter 语法写的吗?还是完全不同?
  • @Bhavin 这是一个不同的代码。一个外部库。
  • @Regolith '无法加载请求的类:Getid3'
  • @OwenBula。好的,看看我的回答。

标签: php codeigniter libraries getid3


【解决方案1】:

使用 CodeIgniter 的内置常量 APPPATH。 (因为代码不是用codeigniter的语法写的)

`require_once(APPPATH.'libraries/getID3/getid3/getid3.php');`

如果这个库是codeigniter的内置库,那么你应该使用。

$this->load->library('libary name');

【讨论】:

    【解决方案2】:

    关于你的文件结构Codeigniter 有解决方案:

    project
    /application
    /controller
    /libraries
        /getID3
            /getid3
                getid3.php
    /model
    /views 
    

    现在要调用 Getid3.php 库,您需要在控制器中添加以下代码。

    $this->load->library ( 'getID3/getid3/getid3', '', 'getid3(you can add any name you want' );
    

    现在使用这个:

    $this->getid3->your_function($data);
    

    请注意Getid3.php 必须以大写字母开头。

    【讨论】:

      【解决方案3】:

      来自CI Documentation

      你可以通过这样做来加载库

      $this->load->library('getID3/getid3/Getid3');
      

      如文档中所述,如果您的文件位于子目录中,例如
      libraries/flavors/Chocolate.php
      您将使用以下方式加载它:

      $this->load->library('flavors/chocolate');

      【讨论】:

      • 你的文件名应该是这样的Getid3.php。见File Naming
      【解决方案4】:

      您可以只对 GetID3.php 主文件执行一次 require_once

      require_once(APPPATH.'libraries/getID3/getid3/getid3.php');

      但是有更好、更简洁的方法来管理这种第三方依赖。

      我建议为库创建一个包装类,而不是直接需要 GetID3.php 文件。创建包装类使您能够扩展/覆盖 getid3 库,并通过允许您以“codeigniter 方式”执行操作来提供更简洁的实现。

      <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
      
      class GetID3 {  
      
          function __construct ( $options = array() )
          {
              require_once( APPPATH . 'third_party/getID3/getid3/getid3.php' );
          }
      
          public function __get( $var ) { return get_instance()->$var; }
      }
      

      以这种方式进行操作可以提供更简洁的界面,并允许使用更具可扩展性的方法来管理第三方依赖项。另外,不是目录结构。在这里,我们将第三方依赖保存到third_party目录,同时将包装类保存到libraries/GetID3.php。

      一旦你以这种方式实现它,你就可以像往常一样加载库:

      $this->load->library('GetID3');
      

      【讨论】:

        猜你喜欢
        • 2013-03-12
        • 2020-12-17
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多