如何从作曲家加载库?
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');
// ...
我加载了一个名为 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 在他的
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');
// ...