2012-05-18 30 views
8

Tôi đang sử dụng trình viết mã. Tôi đã xác định một thư viện trong codeigniter và đang mong đợi một tham số trong constructor.This của nó được mã thư viện của tôi -Tải thư viện bằng cách chuyển tham số đến hàm tạo trong mã vạch

################# [My Library Code Test_lib.php ] ######################## 
<?php 
class Test_lib 
{ 
var $params; 
public function __construct($params) 
{ 
    $this->params = $params; 
    echo $this->params; 
} 
} 

Trong tài liệu CodeIgniter, nó được đề cập rằng bạn có thể vượt qua các tham số trong đối số thứ hai. Vì vậy, tôi đang khởi tạo nó từ bộ điều khiển như sau -

<?php 
class Test_cont extends CI_Controller { 
function __construct() 
{ 
    parent::__construct(); 
} 

function test() 
{ 
    $params = "abc"; 
    $this->load->library("test_lib",$params); 
} 
} 

Tôi nhận được lỗi sau -

Một PHP Lỗi đã gặp phải Mức độ nghiêm trọng: Nội dung Cảnh báo: Thiếu lập luận .....

Xin vui lòng giúp đỡ.

Trả lời

21

$params phải là một mảng. From the documentation:

Trong chức năng nạp thư viện bạn có thể tự động truyền dữ liệu như là một mảng thông qua tham số thứ hai và nó sẽ được chuyển đến nhà xây dựng lớp học của bạn:

$params = array('type' => 'large', 'color' => 'red'); 

$this->load->library('Someclass', $params); 

Trong trường hợp của bạn, bạn muốn để làm một cái gì đó như thế này:

function test() 
{ 
    $params[] = "abc"; // $params is an array 
    $this->load->library("test_lib",$params); 
} 
+0

hi thế nào chúng ta có thể truy cập '$ params' trong thư viện .. – user254153

+2

nếu constructor của tôi là như function __construct ($ param1 = null, $ param2 = null, $ param3 = null) sau đó làm thế nào để pass tham số ???/ –

+0

có nghĩa là nếu tôi không muốn vượt qua một mảng. –

3

Bạn chỉ cần phải sửa đổi $ params từ một vari có thể mảng. hy vọng điều này sẽ làm việc

function test() 
{ 
    $params = array(1=>'abc'); 
    $this->load->library('test_lib',$params); 
} 
Các vấn đề liên quan