2010-08-13 4 views
13

CodeIgniter 라이브러리로 작성한 클래스를 구현하려고합니다.커스텀 CodeIgniter 라이브러리를 로딩 할 때 인수 전달

어떻게 든 클래스의 생성자 함수에 여러 인수를 전달하기 위해 CI의 load() 메서드를 가져올 수 없습니다.

내 수업은 3 개의 인수, 2 개의 배열 및 1 개의 선택적인 문자열을 갖도록 설계되었습니다.

public function __construct($array, $array,$string=""){ 
/** code **/ 
} 

컨트롤러에서 관련 부분 :

Message: Missing argument 2 for MyClass::__construct() 

이 정말 당혹 :

function index(){ 
    $array1 = array('key1'=>'value','key2'=>'value'); 
    $array2 = array('key1'=>'value','key2'=>'value'); 
    $string = "value"; 
    $params = array($array1,$array2,$string); 
    $this->load->library("MyClass",$params); 
} 

컨트롤러로드는이 오류가 발생

이 생성자는 다음과 같이 다소 보인다 나를. 첫 번째 인수가 잘 전달 된 다음 두 번째 인수에서 질식합니다. 왜 이런 일이 일어나는지에 대한 모든 단서가 크게 감사 할 것입니다.

+0

가능한 중복 : http://stackoverflow.com/questions/1149098/php-codeigniter-how-to-pass-parameters를 참조하십시오 -to-a-model –

답변

17

: 동적 수있는 라이브러리 로딩 함수에서 클래스

을 초기화 할 때

http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html

public function __construct($params) 
{ 
    $array1 = $params[0]; 
    $array2 = $params[1]; 
    $string = $params[2]; 

    // Rest of the code 
} 
+0

감사! 그것이 문제였습니다. 물마루 설명서를 읽었지만 어떻게 든 그 부분을 건너 뛰었습니다 :) 실제로 도움이 된 – Andrei

+0

사용자 가이드가 그 메서드가 매개 변수를 정의하는 방법이라고 언급했으면 좋겠습니다. (여러 매개 변수에 대한 선택적 방법이라고 생각했습니다). +1 (내가 할 수 있다면 +2) – Eman

+1

사실, 연관 배열을 사용하여 데이터를 생성자로 전달하는 것이 좋습니다. 이것은보다 읽기 쉬운 코드를 만들고, 선택적 인수를 사용하기 쉽게 만들어 주며, 내장 라이브러리와 더 일관성이 있습니다. – user1618143

0

params를 선언 할 때 array2의 $를 잊어 버리므로 배열 대신 정의되지 않은 상수로 전달됩니다.

여기에 설명 된대로 전달 된 데이터를 처리하는 클래스의 생성자를 수정해야
+0

Ups ... 그냥 오타입니다. 하지만 어쨌든 고마워. :). 편집 됨. – Andrei

0

이 매개 변수를 전달 두 번째 매개 변수를 통해 배열로 데이터를 전달하면 클래스 생성자에 전달됩니다.

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

$ this-> load-> library ('Someclass', $ params); 당신은 당신이 예상하는 클래스 생성자를 설정해야이 기능을 사용하면 데이터 :

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

class Someclass { 

    public function __construct($params) 
    { 
     // Do something with $params 
    } 
} 

?>