如何从作曲家加载库?

How to load a library from composer?

我加载了一个名为 SteeveDroz\Asset 的适合 CodeIgniter 的作曲库,我可以毫无问题地访问 $asset = new SteeveDroz\Asset

我希望能够使用 CodeIgniter 加载它 $this->load->library('SteeveDroz\Asset'),但我收到错误消息

Unable to load requested class: SteeveDroz\Asset

是否可以达到我想要的效果?如果是,如何?

如果您使用的是 CodeIgniter 3,您可以修改 application/config/config.php 并设置

$config['composer_autoload'] = TRUE

$config['composer_autoload'] = FCPATH .'vendor/autoload.php';

这将自动加载您所有的作曲家依赖项。

正如 Alex 在他的 中提到的那样,需要制作一个适配器库。我为此创建了一个通用 class:

application/libraries/ComposerAdapter.php

class ComposerAdapter
{
    private $object;

    public function __construct($object)
    {
        $this->object = $object;
    }

    public function __call($method, $args)
    {
        return call_user_func_array([$this->object, $method], $args);
    }
}

application/libraries/Asset.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require('ComposerAdapter.php');

class Asset extends ComposerAdapter
{
    public function __construct()
    {
        parent::__construct(new SteeveDroz\Asset());
    }
}

application/config/autoload.php

// ...
$autoload['libraries'] = array('asset');
// ...