首页 > 解决方案 > 函数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 中抛出

标签: phphtmlmodel-view-controller

解决方案


在您的 app.php 中替换$params=array_values($url); $this->params=array_values($url);

因为如果你不设置$this->paramsIn construtor,它将保持为空。很像你为方法和控制器所做的。


推荐阅读