在可从控制器访问的单独 php 文件中创建自定义函数

Creating custom function in separate php file which is accessible from controller

我想在 Opencart 2.3.0.2 中为 catalog->controller->checkout->cart.php 编写一个函数 我已经编写了一个逻辑来检查 priduct_id 并在找到特定产品 ID 时采取措施。 现在我想在单独的 php 文件中将此逻辑放在单独的函数中,以便它变得更易于管理。

我在 system->helper 下的 php 文件中创建了函数,并从 startup.php 加载了它。 然后我可以从 cart.php 调用这个函数,但是即使我将 $this 传递给这个函数,对变量 $this 的引用也会丢失。

我的精简代码如下所示 cart.php

//some code before this
  if (!$json) {
                // Check if Product is Addon
                 test($this);
        //more code after this

customfunction.php

    function test($this) {  
    // print_r("Test Called");
    $temp = $this->request->post['product_id'];
    if ($this->request->post['product_id'] == 142) {
                    $json['success']   = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
                    $product_options   = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);
                    $product_option_id = $product_option['product_option_id'];
//more code

我收到

的错误
$this->request->post['product_id'];

谁能告诉我如何从单独的 php 文件中调用自定义函数并保留对 $this 变量的引用。

$this 是 php 中的保留字:

The pseudo-variable $this is available when a method is called from within an object context.

试试看:

function test($ctrl) { 
    $temp = $ctrl->request->post['product_id'];
    if ($ctrl->request->post['product_id'] == 142) {
    ...