2012-05-18 2 views
0

Я использую собственную библиотеку сеанса для замены встроенной библиотеки сеансов в CI. Мне нужно расширить класс, но когда я опускаюсь в MY_Session.php, CI возвращается к старой /system/libraries/Session.php.расширение родного сеанса class codeigniter 1.7.2

Как я могу расширить класс, который заменил основной класс CI, например Session.php?

ответ

1

Просто именование файлов классы одинаково в родную библиотеку будет причины CodeIgniter использовать его вместо нативного. Чтобы использовать эту функцию , вы должны назвать файл и объявление класса точно так же, как и родную библиотеку. Например, чтобы заменить родной Email библиотеки вы создадите файл с именем приложения/библиотеки/email.php

-user руководство

затем вызвать его

class MY_Email extends CI_Email { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 

Загрузка Ваш подкласс:

$this->load->library('email'); 

EDIT Попробуйте это:

Просто загрузите новую библиотеку (тот делает вытянутая):

Тогда, скажем, у нас есть session.php и Mysession.php

<?php 
load_class('session', false); 

class Mysession extends Session { 
    //your code 
} 

Вы дон Мне еще не нужно указывать тег имени MY_, я думаю, вы хотите зарезервировать это для первоначальной цели, чтобы избежать путаницы.

.. еще просто используйте include() или require(): P

+0

Спасибо за ответ. Возможно, я не объяснил, что мне нужно делать хорошо. Я использую эту библиотеку http://codeigniter.com/wiki/Session_Hybrid .. Я удалил файл Session.php в приложении/library/и создал файл MY_Session.php для расширения пользовательского класса сеанса, но когда я это делаю по умолчанию возвращается к собственному управлению сеансом CI. Я пытался выяснить способ переопределения методов пользовательского класса без модификации его кода. – ringerce

+0

Вам не нужно MY_ в имени файла. Просто назовите его Session.php, и он заменит старый. – MikeCruz13

+0

Это работало для вас? – MikeCruz13