【发布时间】:2021-01-17 13:41:08
【问题描述】:
我的控制器
class product extends Controller
{
function __construct()
{
}
public function index($id)
{
$productInfo = $this->model->productInfo($id);
print_r($productInfo);
$this->view('product/index.php');
}
}
?>
我的模特
class model_product extends Model
{
function __construct()
{
parent::__construct();
}
function productInfo($id)
{
$sql = 'select * from tbl_product where id=:x ';
$stmt = self::$conn->prepare($sql);
$stmt->bindParam(':x', $id);
$stmt->execute();
$result = $stmt->fetch();
return $result;
}
}
app.php
class App{
public $controller='index';
public $method='index';
public $params= [];
function __construct()
{
if(isset($_GET['url'])){
$url=$_GET['url'];
$url=$this->parseUrl($url);
$this->controller=$url[0];
unset($url[0]);
if (isset($url[1]))
{
$this->method=$url[1];
unset($url[1]);
}
$params=array_values($url);
}
$controllerUrl='controlls/'.$this->controller. '.php.';
if (file_exists($controllerUrl)){
require ($controllerUrl);
$object=new $this->controller;
$object->model($this->controller);
if(method_exists($object,$this->method))
call_user_func_array([$object,$this->method],$this->params);
}
}
function parseUrl($url){
$url=filter_var($url,FILTER_SANITIZE_URL);
$url=rtrim($url,'/');
$url=explode('/',$url);
return $url;
}
显示这个错误
致命错误:未捕获的 ArgumentCountError:函数 product::index() 的参数太少,在第 40 行的 C:\xampp\htdocs\hermesmvc\core\app.php 中传递了 0,而在 C:\xampp 中恰好是 1 \htdocs\hermesmvc\controlls\product.php:14 堆栈跟踪:#0 C:\xampp\htdocs\hermesmvc\core\app.php(40): product->index() #1 C:\xampp\htdocs\ hermesmvc\index.php(9): App->__construct() #2 {main} 在第 14 行的 C:\xampp\htdocs\hermesmvc\controlls\product.php 中抛出
【问题讨论】:
-
这意味着当你调用你的函数索引时,你不提供任何参数。或者它是空的。当您设置
index($id)时,它会产生一个参数。如何调用函数索引? -
如果您向我们展示 app.php 的第 40 行,我们或许可以为您提供更具体的帮助
-
call_user_func_array([$object,$this->method],$this->params);这是我的 app.php 的第 40 行
-
好吧,我错了...需要看到更多的行。我不知道那里发生了什么。但似乎 $this->params 可能是一个空数组或根本不是一个数组。它必须是一个只有一个值的数组。
-
好的,我已经添加了 app.php,顺便说一句,我没有在我的视图文件中调用函数索引,但我只是将表从我的 db 插入到 php,当我使 $id 等于我的一个产品 'id' 错误消失了,它显示了数组
标签: php html model-view-controller