Codeigniter 如何扩展自己的库?

Codeigniter 如何扩展自己的库?,codeigniter,libraries,extend,Codeigniter,Libraries,Extend,我是codeigniter的新手,希望在我的第一个ci应用程序中添加一个库,扩展另一个库 class Mylib {} /application/libraries/Mynewlib.php: class Mynewlib extends Mylib{} 我必须将Mylib.php放在哪里,如何加载Mylib 谢谢 您可以在application/libraries/mylib.php <?php if ( ! defined('BASEPATH')) exit('No direct

我是codeigniter的新手,希望在我的第一个ci应用程序中添加一个库,扩展另一个库

class Mylib {}
/application/libraries/Mynewlib.php:

class Mynewlib extends Mylib{}
我必须将Mylib.php放在哪里,如何加载Mylib


谢谢

您可以在
application/libraries/mylib.php

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

class MyLib
 {

    function __construct() 
    {
         // initialize variables if you want
    }

    public function  my_function($something)
    {
    $out = $something . " World";
    return $out;
    }

}

/* End of file mylib.php */

您可以使用库中的get实例在中加载另一个库

<?php

class MyLib {

public function __construct() {
    $this->CI =& get_instance();
    $this->CI->load->library('mylib2');

}

public function something() {
   $this->CI->mylib2->some_function();
}

}

在这种情况下,我仍在寻找最佳实践

在我的例子中,我有两个类应该从父类扩展而来。 (b)付款-父类; Payment_paypal-与paypal互动; 支付(nganluong-与我的国内门户银良互动) 对于每个支付网关,我必须编写一些属性、处理方法,但基本属性和主题方法几乎是相同的

我的解决方案:我创建了4个文件:

  • Payment_base.php

    class付款基础{
    //基本性质和方法
    }

  • Payment.php

    require_once(APPPATH./libraries/Payment_base.php');
    //这是payment_base的一个实例,
    //当您想要使用基本方法和属性时
    //只需拨打$payment->。。。
    //
    类别付款扩展了付款基础{
    公共函数构造(){
    父项::_构造()
    } 
    }

  • paypal.php支付

    require_once(APPPATH./libraries/Payment_base.php');
    类Payment_paypal扩展Payment_base{}
    //////////////////////////////////////////
    需要一个“Payment_base.php”;
    类Payment_paypal扩展Payment_base{
    //性质与方法
    }

  • 4、付款_nganluong.php

    require_once (APPPATH.'/libraries/Payment_base.php');
    class Payment_nganluong extends Payment_base { 
    // properties and method
    }
    
    就是这样,在控制器中:

    $this->load->library('payment');
    $this->load->library('payment_paypal');
    $this->load->library('payment_nganluong');
    $this->payment->myMethod(); // base method
    $this->payment_paypal->charge(); // call to paypal to charge money
    $this->payment_nganluong->checkout(); // check out with Ngan Luong
    // no need to load and use payment_base
    
    希望能对你有所帮助。

    这对我很有用

    库文件Mylib.php

    class Mylib {
       function test() 
       {
           return 1;
       }
    }
    
    库文件Mynewlib

    require_once('Mylib.php');   
    class Mynewlib extends Mylib{}
    
    控制器

    $this->load->library('Mynewlib');
    echo $this->Mynewlib->test();
    

    是否需要访问另一个库中包含的库?请阅读有关创建库的用户指南@克雷格:我已经看过这本指南了。但是哪里解释了如何扩展自己的库,而不是本机库?@wolfgang1983:当然,这就是我扩展Mylib的原因,所以我不需要在Mylib的所有子类中编写相同的代码在扩展lib文件之前,是否包含了它?或者试过核心控制器?这个答案与Glueckstiger的问题不符
    $this->load->library('Mynewlib');
    echo $this->Mynewlib->test();