Тема: Конструктор у CodeIgniter

Одним словом маю я клас News, і треба мені, щоб у конструкторі виконувалася функція з хелперу member(у файлі autoload все прописано, для його автозавантаження).
Що я роблю:

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

class News extends CI_Controller {
    
    
    public function __construct() 
    {
        parent::__construct();
        
        //$CI = & get_instance();
        //var_dump($CI->load->helper('member')); 
        
            if(!_is_admin())
            {
                Header("Location: /member/auth");
                exit;
            }
    }
    public function index( )
    {
        
    }
}

А результату 0. Я ніяк не можу зрозуміти, як можна заюзати функцію з хелпера у конструкторі класу.
Пробував також через get_instance();, але так само результату 0.

2

Re: Конструктор у CodeIgniter

А яку функцію з якого класу хелпера?

Re: Конструктор у CodeIgniter

funivan написав:

А яку функцію з якого класу хелпера?

Функція _is_admin( ). Це звичайна функція, не метод класу.

Re: Конструктор у CodeIgniter

Також походу виникла потреба підключити модель у конструкторі.
Прописавши:

$this->load->model('News'); 

Вона не підвантажується :(

5

Re: Конструктор у CodeIgniter

Давайте спочатку розберемось з головним питанням.
Що саме у вас не працює? Я так розумію у вас має відправлятись хедер (редірект на іншу сторінку) вірно?

Re: Конструктор у CodeIgniter

funivan написав:

Давайте спочатку розберемось з головним питанням.
Що саме у вас не працює? Я так розумію у вас має відправлятись хедер (редірект на іншу сторінку) вірно?

Так, вірно.

7

Re: Конструктор у CodeIgniter

Що у вас видає сторінка, і чи взагалі спрацьовує ця функція. Вставте вивід якоїсь інформації ;)
І гляньте який хедер відповідає вам сервер)

Re: Конструктор у CodeIgniter

funivan спасибі, що допомагали.
Проблема була банально проста. У функції _is_admin() я використовував функцію is_logged()
але після деякого рефакторингу, я змінив ім`я на _is_logged()
От і виходила така фігня, що я у конструкторі юзав функцію, яка юзає функцію, якої немає :D

9

Re: Конструктор у CodeIgniter

От і виходила така фігня, що я у конструкторі юзав функцію, яка юзає функцію, якої немає :D

тоді включіть вивід помилок і ви побачите це з першого разу ;)

Re: Конструктор у CodeIgniter

funivan написав:

От і виходила така фігня, що я у конструкторі юзав функцію, яка юзає функцію, якої немає :D

тоді включіть вивід помилок і ви побачите це з першого разу ;)

ОТ прикол у тому, що у файлі index.php через який проходить все, стоїть display_errors = true
але помилка та не відображалася. А коли поставив безпосередньо у самому конструкторі - тоді показало помилку.

11

Re: Конструктор у CodeIgniter

Hanter написав:

.. треба мені, щоб у конструкторі виконувалася функція з хелперу member(у файлі autoload все прописано, для його автозавантаження)...

...Функція _is_admin( ). Це звичайна функція, не метод класу...

По-перше, як у вас може бути все правильним записано в автозавантажувачі, якщо _is_admin( ) це не метод класу?

Вам мабуть просто треба справді створити цей клас Member, після чого прописати в ньому статичну функцію _is_admin( ), і лише потім в коді можна буде звератись до неї так Member::_is_admin().

Re: Конструктор у CodeIgniter

ktretyak написав:

По-перше, як у вас може бути все правильним записано в автозавантажувачі, якщо _is_admin( ) це не метод класу?

Вам мабуть просто треба справді створити цей клас Member, після чого прописати в ньому статичну функцію _is_admin( ), і лише потім в коді можна буде звератись до неї так Member::_is_admin().

Або Ви мене не зрозуміли, або Ви не працювали з CI.
У CI в файлі autoload.php можна вказати які хелпери завантажувати автоматично. Не знаю, як у інших фреймворках, а у CI у файлі хелперу не обов`язково має бути клас.
Тобто вказується не якась конкретна функція, а цілий файл, який містить у собі ту функцію.

13

Re: Конструктор у CodeIgniter

Я розвяжу ситуацію. Фраза "щоб у конструкторі виконувалася функція з хелперу member" у багатьох програмістів асоціюється з викликом методу Member_Helper::is_admin()
Хелпери - статичні класи (у більшій мірі)

p.s. Те що в СІ тупо фунції у файлах це трохи жестяк)) Хоча б у класи організовували)