使用Composer库和CodeIgniter的未定义方法

时间:2016-12-20 08:47:58

标签: php codeigniter composer-php autoload

我正在开展一个项目,对我来说有点太难了...... 我解释一下。

我需要用PHP解析PDF文件,以分析这些文件的内容。为此,我使用pdfparser.org库。 我首先尝试通常包含这个库,没有任何结果。 阅读完所有的互联网后,由于这个库需要安装Composer(在我的网络托管上我无法安装Composer),我已经在我的Windows PC上应用了Composer过程。我得到了“autoload.php”文件的“vendor”文件夹。好!!

然后,我试图在CodeIgniter中正确包含它。我选择的解决方案是:

  1. 在application / libraries /

    中创建文件“Pdfparser.php”
    class Pdfparser
    {
        public function __construct()
        {
            require_once APPPATH."/third_party/pdfparser.php";
        }
    }
    
  2. 然后,我在application / third_party /中添加了PdfParser“Composer”应用程序,并在/third_party/pdfparser.php中添加:

    if (!defined('pdfparser')) {
        define('pdfparser', dirname(__FILE__) . '/');
        require(pdfparser . 'pdfparser/autoload.php');
    }
    
  3. 然后,我将此库添加到CodeIgniter /application/config/autoload.php中:

    $autoload['libraries'] = array('pagination', 'form_validation','email','upload','pdfparser');
    
  4. 最后,我在application / controllers / Admin.php中的函数中调用它:

    $parser = new Pdfparser();
            $pdf    = $parser->parseFile(myfile.pdf);
            $full_text = $pdf->getText();
    

    (这4段代码直接取自官方文档:http://www.pdfparser.org/documentation,并且刚刚改编)。

  5. 但现在,我打破了互联网......我有这个错误:

    PHP Fatal error:  Call to undefined method PdfParser::parseFile() in /path/application/controllers/Admin.php on line 3083
    
  6. 看了CodeIgniter文档之后,我尝试将Composer自动加载器添加到核心...在application / config / autoload.php中我把:

    $config['composer_autoload'] = APPPATH . "/third_party/pdfparser/autoload.php";
    
  7. 当然,它不起作用。我迷路了......

3 个答案:

答案 0 :(得分:1)

正确使用composer。 $config['composer_autoload'] = TRUE;并在您的应用程序文件夹中运行composer install smalot/pdfparser。然后在你的控制器内运行它,如果不使用,请使用:)

use Smalot\PdfParser;
class My_controller extends CI_Controller {
}

答案 1 :(得分:1)

使用composer时,要在项目中包含库,您可以执行以下操作:

composer install smalot/pdfparser

然后,要包含新安装的库,您只需要包含" autoload.php"文件由composer提供:

<?php

include 'vendor/autoload.php';

$parser = new Pdfparser();
$pdf    = $parser->parseFile(myfile.pdf);
$full_text = $pdf->getText();

var_dump($full_text);

没有更多。

答案 2 :(得分:0)

替换您的代码

class Pdfparser
{
    public function __construct()
    {
        require_once APPPATH."/third_party/pdfparser.php";
    }
}

   <?php

require_once APPPATH."/third_party/pdfparser.php";
class Pdfparser
{
    public function __construct()
    {
    }
}

包括在课堂外。

您可以像这样加载库,而不是使用自动加载......

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

示例:

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