0

基本的に、いくつかの機能を持つヘルパー ファイルがあります。構成ファイルにヘルパーを自動ロードするので、理論的には再ロードする必要はありません。

ただし、作業中の新しいライブラリ内で (このヘルパーから) 作成した関数を使用しようとすると、次のエラーが発生します。

"Parse error: syntax error, unexpected '(', expecting ',' or ';' in /home/techwork/public_html/giverhub/application/libraries/Udetails.php on line 7"

その関数を他の場所(モジュール、コントローラー、ビュー)で使用すると、正常に機能します。

次に、http: //codeigniter.com/user_guide/general/creating_libraries.htmlの指示に従って、ヘルパーを読み込んでみるべきだと思いました。

参照と読み込みを試みますが、それもエラーによって発生します。

"Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /home/techwork/public_html/giverhub/application/libraries/Udetails.php on line 5"

ライブラリは次のとおりです。

class Udetails{

$CI =& get_instance();// referencing as described in their website
$CI->load->helper('mylogin_helper');// loading the helper
public $member_session = is_member(); // using the function 
public $username = $member_session['username'];
public $current_uID = $member_session['id'];
public $member_status = $member_session['status'];
}

ヘルパー内の関数は次のとおりです。

if ( ! function_exists('is_member'))
{
    function is_member(){
        $CI =& get_instance();
    $is_logged_in = $CI->session->userdata('is_logged_in');
    $username = $CI->session->userdata('username');
    $capabilities = $CI->session->userdata('capabilities');
    $user_id = $CI->session->userdata('id');
    switch ($capabilities){
        case 'registered':
          $level = 1;
          break;
        case 'confirmed':
          $level = 2;
          break;
        case 'charity_admin':
          $level = 3;
          break;
        case 'admin':
          $level = 4;
          break;
        case 'super_admin':
          $level = 5;
          break;
        default:
          $level = 0;
    }

    $userdetails = array();
    if(isset($is_logged_in) && $is_logged_in == true){
        if($level > 1){
            $userdetails['username'] = $username;
            $userdetails['status'] = TRUE;
            $userdetails['id'] = $user_id;
            return $userdetails;
        }

    }   

}   
}
4

2 に答える 2

0
class Udetails{

    // initializing variables that will be used in other methods
public $username;
public $current_uID;
public $member_status;

public function __construct(){
    $member_session = is_member();
    $this->username = $member_session['username'];
    $this->current_uID = $member_session['id'];
    $this->member_status = $member_session['status'];
}

// All the gets
    public function anothermethod(){
         //$CI =& get_instance(); - need to load those on each method if needed
         //$CI->load->helper('mylogin_helper'); - need to load those on each method if needed
        //can now use any of the variable deined in the construct in other methods.
        return $this->username;
    }
}

コントローラーで:

$this->load->library('udetails');
$somevar = $this->udetails->anothermethod();

それが役立つことを願っています。

于 2012-10-19T17:19:03.627 に答える