Codeigniter 如何扩展自己的库?
我是codeigniter的新手,希望在我的第一个ci应用程序中添加一个库,扩展另一个库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
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();