我很难在代码中找出错误。在SO上有一些类似的问题,但它们对我的具体问题没有多大帮助。我还搜索了关于错误的每一个可能的短语,但仍然没有快乐。
在ProductCategoryController.php
我有:
namespace App\controllers\admin;
use App\classes\CSRFToken;
use App\classes\Request;
use App\classes\ValidateRequest;
use App\models\Category;
class ProductCategoryController
{
public $table_name = 'categories';
public $categories;
public $links;
public function __construct()
{
$obj = new Category();
$total = Category::all()->count(); // total number of rows
list($this->categories, $this->links) = paginate(3, $total, $this->table_name, $obj);
}
public function show() {
return view('admin/products/categories',
[
'categories' => $this->categories,
'links' => $this->links
]);
}
}
我收到错误
using $this when not in object context
在第27行,我指定了'categories' => $this->categories
和'links' => $this->links
当我尝试设置'类别'和'链接'到一个空数组,一切都按预期工作正常。
也许我可能会遗漏一些非常明显的东西,对我的问题的任何支持都很受欢迎。
答案 0 :(得分:1)
在您的调度员中,您静态调用控制器的方法。
在您的代码中,您将测试您的方法是否可在新实例上调用。然后在调用时不要继续重用新创建的实例。而是使用call_user_func_array中的类和方法名称 - 因此静态调用它,这会导致错误。
尝试将代码更改为更像这样的代码:
$controller = new $this->controller;
$method = $this->method;
if(is_callable(array($controller, $method)))
call_user_func_array(array($controller, $method), $params);
或移动new
:
if(is_callable(array($this->controller, $this->method)))
call_user_func_array(
array(new $this->controller, $this->method),
$params
);