Codeigniter 4 - вызов метода с другого контроллера - PullRequest
1 голос
/ 06 апреля 2020

Как вызвать «functionA» из «ClassA» в «functionB» внутри «ClassB»?


class Base extends BaseController
{
    public function header()
    {
        echo view('common/header');
        echo view('common/header-nav');
    }
}

class Example extends BaseController
{
    public function myfunction()
        // how to call function header from base class
        return view('internet/swiatlowod');
    }   
}

1 Ответ

1 голос
/ 08 апреля 2020

Ну, есть много способов сделать это ...

Одним из таких способов может быть что-то вроде ...

  1. Допустим, этот пример. php - это необходимый интерфейс поэтому нам понадобится маршрут к нему.

В app \ Config \ Routes. php нам нужна запись

$routes->get('/example', 'Example::index');

Это позволяет нам использовать URL your-site dot com / example

Теперь нам нужно решить, как мы хотим использовать функции в Base внутри Example. Таким образом, мы могли бы сделать следующее ...

<?php namespace App\Controllers;

class Example extends BaseController {

    protected $base;

    /**
    * This is the main entry point for this example.
    */
    public function index() {
        $this->base = new Base(); // Create an instance
        $this->myfunction();
    }


    public function myfunction() {
        echo $this->base->header();       // Output from header
        echo view('internet/swiatlowod'); // Output from local view
    }
}

Когда и где вы используете новую Base (), зависит от вас, но вам нужно использовать, прежде чем она понадобится (очевидно).

Вы можете сделать это в конструкторе, вы можете сделать это в родительском классе и расширить его, чтобы он был общим для группы контроллеров.

Вам решать.

...