调用方法时如何解决错误实例?

时间:2017-05-30 19:27:21

标签: php

我有常量类。我如何确定actionWithParams()将获得当前的类常量?现在我得到“实例”错误:

<?php
class MyClass
{
    const PARAM_1 = 1;
    const PARAM_2 = 2;

    protected $plans;


    // ..

    public function actionWithParam(MyClass $param){
        //...
    }
}

$obj = new MyClass();
$obj = $obj->actionWithParam(MyClass::PARAM_1);

2 个答案:

答案 0 :(得分:1)

您传递的是整数,而不是MyClass的实例。

MyClass::PARAM_1是一个整数,这是您传递给actionWithParam()的内容。由于您已经键入了该方法,因此它要求它的参数是&#34;&#34;&#34; MyClass类,整数显然不是。只需摘下那个&#34; MyClass&#34;提示,你不应该再犯这个错误了。

一个人不得不问 - 为什么要将类常量传递给该类中的方法?

答案 1 :(得分:1)

您的方法定义类型提示参数如下:

 public function actionWithParam(MyClass $param){

这意味着$param必须是MyClass的一个实例,但是你传递的是MyClass::PARAM_1,这是一个整数。只需删除typehint:

public function actionWithParam($param){

或者,您可以键入一个整数参数:

public function actionWithParam(int $param){

另外,您可能不想这样做:

$obj = $obj->actionWithParam(MyClass::PARAM_1);

这将使用该方法返回的任何值覆盖您的$obj对象实例。