0

としょうかん

class getLang {
   public function getText($en, $ar) {
      $CI =& get_instance();
      $lang = $CI->session->userdata('language');
      if ($lang == 'en') {
         $string = $en;
      } else if ($lang == 'ar') {
         if (!empty($ar)) {
            $string = $ar;   
         } else if (empty ($ar)) {
            $string = $en;
         }
      }
      return $string;
   }
}

コントローラ

class Home extends MY_Controller {
   public function test() {
      $this->load->library('getLang');
      return $this->getLang->getText('text', '');
   }
}

home/test を実行すると、次のエラーが表示されます。

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Home::$getLang

Filename: controllers/home.php

Line Number: 6

カスタム ライブラリは既に config/autoload にロードされています。ライブラリがロードされていないようです。コントローラにもロードしようとしましたが、まだ機能しません! どうすればこれを解決できますか?

4

1 に答える 1

9

CodeIgniterのドキュメントには、クラス名とファイル名を大文字にする必要があることが明記されています。ドキュメントから:

  1. ファイル名は大文字にする必要があります。例:Myclass.php
  2. クラス宣言は大文字にする必要があります。例:クラスMyclass
  3. クラス名とファイル名は一致する必要があります。

おそらくそれが正しくロードされていない理由です。

ちなみに、という名前のクラスはgetLang間違っているように聞こえます。それは方法のように聞こえます。Language、、Translator..などの名前をお勧めします。

編集:ドキュメントでは、名前の小文字バージョンを使用してライブラリにアクセスすることも求められています。例:$this->getlang->getText(...)

于 2013-02-08T18:58:11.810 に答える