2013-02-08 4 views
0

БиблиотекаНе удается загрузить Codeigniter Пользовательские библиотеки

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', ''); 
    } 
} 

Когда я бегу домой/тест я получаю эту ошибку:

A PHP Error was encountered 

Severity: Notice 

Message: Undefined property: Home::$getLang 

Filename: controllers/home.php 

Line Number: 6 

Я уже загрузил пользовательскую библиотеку в config/autoload. Похоже, что библиотека не загружена, я также попробовал загрузить ее в контроллер, но не работает! Как я могу это решить?

+0

в какой папке находится ваша библиотека? полный путь пожалуйста. –

+0

@mamdouhalramadan Полный путь - приложение/библиотеки/getLang.php – Sarah

ответ

8

В документации CodeIgniter четко указано, что имя класса и имя файла должны быть капитализированы. От the documentation:

  1. File names must be capitalized. For example: Myclass.php
  2. Class declarations must be capitalized. For example: class Myclass
  3. Class names and file names must match.

Это, вероятно, почему она не загружена правильно.

На боковой ноте класс с именем getLang звучит неправильно. Это звучит как метод. Я бы предложил такое имя, как Language, Translator, ...

Редактировать: документация также просит получить доступ к вашей библиотеке, используя нижнюю регистрационную версию имени. Пример: $this->getlang->getText(...)

+0

Большое спасибо за информацию. Я фактически решил включить мою функцию в другую загруженную библиотеку и отлично работает. – Sarah