Вызов метода с другого контроллера

Тема в разделе "Общие вопросы", создана пользователем pomansur, 14 сен 2022.

  1. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    Здравствуйте.
    Мне нужно вызвать в файле контроллера my/my.php методы, из другого контроллера my/args.php.
    Кроме как $Controller = $this->load->controllet('my/args/методы' ,$data), ни как не обратиться к ним, как нибудь попроще?


    Как наподобе обращения к library, но не помещая туда свой класс с методами.
     
    Последнее редактирование: 14 сен 2022
  2. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    $this->load->controller('my/args_lib');
    $sp = new ControllerMyArgsLib($this->registry);
    $aa = $sp->ppp();
    var_dump($aa);


    Но почему не работает, если не передавать регистр
    $sp = new ControllerMyArgsLib(); ???
     
  3. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Здравствуйте

    А зачем вам проще? И так же вроде просто?

    Можете создать свой отдельный класс и вызывать его. Ну и вы смотрели конструктор базового контроллера?
     
  4. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    А зачем вам проще? И так же вроде просто?
    Методов много. каждый раз писать $this->load->controllet('my/args/методы' ,$data) мне лень )))
     
  5. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    и поместить его в библиотеку?
     
  6. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Так а что у вас за методы? Например, если вам там только доступ к БД нужен и не нужно ничего выводить. Сделайте класс с конструктором с передачей коннекта к БД. И добавьте этот класс куда-нибудь в каталог system в свою директорию
     
  7. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    В принципе, паттерн MVC не противоречит возможности существования обычных классов (т.е. не обязательно все в контроллерах и моделях хранить).
     
  8. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    Там в основном хочу сделать функции обработки строк, обращения к серверу по API , что бы не загромождать код. Получается большая портянка. Жутко не удобно елозить по ней.


    "Сделайте класс с конструктором......" для меня конструктор, это что то очень серьезное. Я его не понимаю. )))) Спасибо.
     
  9. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Сделайте обычный класс в отдельном файле. Если не понимаете конструктор, то сделайте обычное protected поле, добавьте метод в стиле init (&$db), амперсант (&) это для передачи по ссылке. Ну и подключите класс до объявления контроллера через require_once. Далее просто создавайте класс в нужном месте контроллера, добавляйте вызов obj->init($this->db) и пользуйтесь методами.
     
    pomansur нравится это.
  10. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Что-то в стиле:

    PHP:
    require_once DIR_SYSTEM 'MyLib/MyClass.php';

    class 
    ControllerExtension... extends Controller
    {
        ....
       
        public function 
    index()
        {
       
            ...
           
            
    $my = new MyClass();
           
            
    $my->init($this->db);
           
            ....
           
            
    $my->someMethod($data);
        }
     
    pomansur нравится это.
  11. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Ну а сам класс примерно так:

    PHP:
    class MyClass
    {
        protected 
    $db;

        public function 
    init(&$db)
        {
            
    $this->db = &$db;
        }
        
        ...
        
        
        public function 
    someMethod($data)
        {
            ....
        }
     
    pomansur нравится это.
  12. pomansur

    pomansur Пользователь

    Сообщения:
    75
    Симпатии:
    40
    Надо попробывать. Спасибо.
     
  13. devimirochnik

    devimirochnik Продвинутый пользователь

    Сообщения:
    740
    Симпатии:
    100
    Пожалуйста