php - 函数php的参数太少
问题描述
我的控制器
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;
}
}
应用程序.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\htdocs\ 中恰好是 1 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 中抛出
解决方案
在您的 app.php 中替换$params=array_values($url);
为 $this->params=array_values($url);
因为如果你不设置$this->params
In construtor,它将保持为空。很像你为方法和控制器所做的。
推荐阅读
- elasticsearch - 为什么当我尝试“elasticsearch-service.bat start”时出现错误“启动 'elasticsearch-service-x64' 服务失败”?
- shopify - Liquid 错误:数组“collection.products”不可分页
- discord.py - 如何使用 discord.py 显示人们加入 Discord 服务器的天数
- api - Google Apps Script/URLFetchApp 和使用返回的数据
- amazon-web-services - 向用户授予对 dynamodb 表的访问权限
- reactjs - React Native 按钮不改变宽度
- java - 如何限制 GET 请求检索到的数组元素的数量(REST API JAVA)
- java - Spark sql注册的临时表不能在sqlContext.read()中使用?
- dart - 函数(int)是 Dart 中的函数(对象)吗?
- php - 如何防止 Masonry Grid 中“获取相关内容”的重叠?