2017-02-13 91 views
0

PHP新手,oop & codeigniter。 我的CI版本是3.1.2。無法訪問codeigniter庫中的函數

我想加載一個我建立的庫,試圖理解面向對象的原則。可能我錯過了一些東西。

以下是我的圖書館。

<?php 
class DPS { 
    private $mode; 

    public function __construct($params){ 
     //print_r($params); 
     $this->mode = $params['mode']; 
    } 

    public function get_url(){ 
     if($this->$mode == "TEST"){ 
      return "https://uat.paymentexpress.com/pxaccess/pxpay.aspx"; 
     } elseif($this->$mode == "LIVE"){ 
      return "https://sec.paymentexpress.com/pxaccess/pxpay.aspx"; 
     } 
    } 
} 
?> 

我試圖訪問下面的控制器中的get_url方法。

$params = [ 'mode' => 'TEST']; 
$dps = $this->load->library('DPS',$params);  
echo $dps->get_url(); 

Codeigniter正在拋出下面的錯誤消息。

Fatal error: Call to undefined method CI_Loader::get_url()

作爲一個新手我可能會錯過某種OO花式thingi。我無法弄清楚。任何幫助是極大的讚賞。

預先感謝您

回答

1

試試這個,

$this->load->library('dps',$params);  
echo $this->dps->get_url(); 
+0

您好,我得到「消息:未定義的變量:模式」的錯誤,當我嘗試 –

+0

哎呀,你應該讓小寫字母而不是大寫,同時加載庫,檢查我的編輯答案。 @ElaBuwa – Viral

+0

我得到2個錯誤。 1.消息:未定義的變量:模式 - >指向庫。 2.消息:無法訪問空屬性 - >指向庫。所有的錯誤都指向「if($ this - > $ mode ==」TEST「){」 –

0

總是加載庫在笨這樣

$this->load->library('library_name'); 

並調用庫的方法使用

$this->library_name->method_name(); 

SO嘗試像這樣...

保存在您的application/libraries庫作爲Dps.php。然後

$params = [ 'mode' => 'TEST']; 
$dps = $this->load->library('dps',$params);  
echo $this->dps->get_url(); 

,並在您DPS庫。糾正

public function get_url(){ 
     if($this->mode == "TEST"){ 
      return "https://uat.paymentexpress.com/pxaccess/pxpay.aspx"; 
     } elseif($this->mode == "LIVE"){ 
      return "https://sec.paymentexpress.com/pxaccess/pxpay.aspx"; 
     } 
    }