【问题标题】:Expected type 'object'. Found 'void'.intelephense(1006) Issue in PHP MVC project预期类型“对象”。在 PHP MVC 项目中发现 'void'.intelephense(1006) 问题
【发布时间】:2022-02-03 05:32:53
【问题描述】:

获取预期类型“对象”。在 PHP MVC 项目中发现 'void'.intelephense(1006) 问题。我在这里附上了我关注的相关代码和来源(youtube)。如果有人能解释发生了什么,不胜感激。

有一个家庭控制器,其功能可以获取这样的模型实例:(我是如何编码的)

<?php

class Controller{

    public function model($model){

        require_once '../app/models/' . $model . '.php';
        
        return new $model();
    }
    
}

有这样的 User.php 类:(我是如何编码的)

<?php 


class User{
    public $name;

    public function __construct()
    {
        
    }
}

拥有这样的 Home 控制器:(我如何编码)

<?php

class Home extends Controller{

    public function index($name = ''){

      
        $user = $this->model('User');
        $user->name = $name;
        echo $user->name;
        
    }

    public function test(){

        echo 'test_function()';

    }

    public function get_user_name(){

    }

    public function model($model){
        echo $model;
    }
}

靠近$user->name = $name;和 echo $user->name;它显示了错误。 this is the screenshot 恐怕找不到问题。我认为这是模型的问题,但尚未解决。我正在观看一个 youtube 视频系列并这样做。这是相关的视频网址youtube video 编码为此处,但我遇到了麻烦。有人可以解释为什么会发生这种情况以及错误在哪里吗?我想澄清一下这个 MVC 架构。

【问题讨论】:

    标签: php object model-view-controller void


    【解决方案1】:

    这是因为您覆盖获取模型的方法。

    只需删除控制器中的最后几行即可。

    public function model($model){
        echo $model;
    }
    

    或像这样修改(但这不是必需的,因为它包含主控制器)

    public function model($model){
        var_dump(parent::model($model));
    }
    

    这部分将在你的控制器中调用模型方法,而不是在定义正确实现的父控制器中调用

    $user = $this->model('User'); // this probably echo output User
    $user->name = $name; // this fail
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 2020-04-04
      • 2021-10-04
      • 2018-08-16
      • 2020-04-09
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多