首页 文章

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

提问于
浏览
0

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

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

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

  • 在application / libraries /中创建文件“Pdfparser.php”
class Pdfparser
{
    public function __construct()
    {
        require_once APPPATH."/third_party/pdfparser.php";
    }
}
  • 然后,我在application / third_party /中添加了PdfParser“Composer”应用程序,并在/third_party/pdfparser.php中添加:
if (!defined('pdfparser')) {
    define('pdfparser', dirname(__FILE__) . '/');
    require(pdfparser . 'pdfparser/autoload.php');
}
  • 然后,我将此库添加到CodeIgniter /application/config/autoload.php中:
$autoload['libraries'] = array('pagination', 'form_validation','email','upload','pdfparser');
  • 最后,我在application / controllers / Admin.php的函数中调用它:
$parser = new Pdfparser();
        $pdf    = $parser->parseFile(myfile.pdf);
        $full_text = $pdf->getText();

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

  • 但现在,我打破了互联网...我有这个错误:
PHP Fatal error:  Call to undefined method PdfParser::parseFile() in /path/application/controllers/Admin.php on line 3083
  • 看了CodeIgniter文档之后,我尝试将Composer自动加载器添加到核心...在application / config / autoload.php中我把:
$config['composer_autoload'] = APPPATH . "/third_party/pdfparser/autoload.php";
  • 当然,它不起作用 . 而我迷路了......

3 回答

  • 1

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

    use Smalot\PdfParser;
    class My_controller extends CI_Controller {
    }
    
  • 1

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

    composer install smalot/pdfparser
    

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

    <?php
    
    include 'vendor/autoload.php';
    
    $parser = new Pdfparser();
    $pdf    = $parser->parseFile(myfile.pdf);
    $full_text = $pdf->getText();
    
    var_dump($full_text);
    

    而已 .

  • 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');
    

相关问题