如何在Codeigniter中重新加载库?

vu8f3i0k  于 2023-02-27  发布在  其他
关注(0)|答案(4)|浏览(101)
  • 库正在从2个函数调用。当我第二次调用它时,它选择了第一个函数的数据。我想在第二个函数中重新加载库。
public function impnewsdetail($ref) {
    $url = array(
       'base' => $ref,
       'category' => ""
    );

    $this->load->library('crawler', $url);
    $nd = $this->crawler->getNewsDetail();
    $newsdetail = array(
      'detail_heading' => $nd['detail_heading'],
      'detail_tags' => $nd['detail_tags'],
      'detail_date' => $nd['detail_date'],
      'detail_image' => $nd['detail_image'],
      'detail_image_detail' => $nd['detail_image_detail'],
      'detail_text' => $nd['detail_text']
    );

    return $newsdetail;
}
xwmevbvl

xwmevbvl1#

如果您不希望设置不同的库名称(如@mic建议),您可以取消设置库以强制Loader使用另一个配置再次加载:

$this->load->library ('crawler', $url_1);
unset ($this->crawler);
$this->load->library ('crawler', $url_2);
xpszyzbs

xpszyzbs2#

试试这个我不确定。

$this->load->library('crawler');
$mylib= new Mylib($url);
$mylib->somemethod();
l7wslrjt

l7wslrjt3#

也许你可以为你正在加载的对象设置一个唯一的名字。2这可以像这样完成:

function method1()
{
    $this->load->library('crawler', $url, 'crawler1');

    $this->crawler1->method();
}

function method2()
{
    $this->load->library('crawler', $url, 'crawler2');

    $this->crawler2->method();
}

现在它的每个示例都是唯一的。
希望这能帮上忙,祝你好运

5us2dqdw

5us2dqdw4#

也许有人会发现这个问题,下面是我的解答:您可以使用“将更改库”选项在库中定义新方法:
示例-在存储库中定义:

function __construct($initParams = array())
        {
           //..somecode
           // init option here 
           //........
           // end init
        }
//add this function to re-config:
function reloadConfig($initParams){
           //simple re-call init option code
           // init option here 
           //........
           // end init
        }

使用中:

$this->load->library ('crawler', $option1);

//and when want to change option:
$this->crawler->reloadConfig($option2);

相关问题