我在 BaseController 中有一個名為 pr 的函式。我可以在我的控制器中訪問這個功能,但我也想在視圖中使用這個功能。有辦法嗎?


編輯:這就是我嘗試在視圖中使用 pr 的方式。
<div class="col-md-9">
<?php
$this->pr("11", 22);
我的公關功能是;
public function pr($array, $die = "", $type = "")
{
ini_set("xdebug.var_display_max_children", '-1');
ini_set("xdebug.var_display_max_data", '-1');
ini_set("xdebug.var_display_max_depth", '-1');
echo "<pre>";
if (!$type) print_r($array);
else var_dump($array);
echo "</pre>";
if ($die) die();
}
uj5u.com熱心網友回復:
你pr打錯了:
pr是 \App\Controller\Home 類中的一個方法。所以它應該是 \App\Controller\Home::pr()。相反,您正在呼叫 \CodeIgniter\View\View::pr()。視圖可能會呈現到某些 \CodeIgniter\View\View 類實體中,因此呼叫
$this視圖會導致呼叫\CodeIgniter\View\View::pr(). 這就是$this->pr()呼叫未按預期作業的原因。你
Home::pr()是一個普通的方法,只能在實體$this內部呼叫(即通過實體內部呼叫)。您的視圖無權訪問它。似乎您
pr沒有做任何特定于 Controller 實體的事情(即不在$this內部使用),您可以簡單地將其重寫為公共靜態方法,該方法可以在您的視圖中輕松呼叫。
所以,這可能對你有用。
控制器:
namespace App\Controllers;
...
class Home {
...
public static function pr($array, $die = "", $type = "")
{
ini_set("xdebug.var_display_max_children", '-1');
ini_set("xdebug.var_display_max_data", '-1');
ini_set("xdebug.var_display_max_depth", '-1');
echo "<pre>";
if (!$type) print_r($array);
else var_dump($array);
echo "</pre>";
if ($die) die();
}
...
}
看法:
<div class="col-md-9">
<?php \App\Controllers\Home::pr("11", 22); ?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383744.html
標籤:php 功能 codeigniter-4
上一篇:執行緒池未完成所有任務
