Codeigniter 4 - 从另一个控制器调用方法

Codeigniter 4 - call method from another controller

如何在 "ClassB" 中的 "functionB" 中从 "ClassA" 调用 "functionA"?


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. 假设 example.php 是必需的前端,因此我们需要一个到它的路由。

在app\Config\Routes.php中我们需要条目

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

这让我们可以使用 URL 您的网站点 com/example

现在我们需要决定如何在 Example 中使用 Base 中的函数。所以我们可以做以下事情...

<?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
    }
}

何时何地使用 new Base() 由您决定,但您需要在需要之前使用(显然)。

您可以在构造函数中执行此操作,您可以在父级中执行此操作 class 并扩展它以便一组控制器通用。

由你决定。