我有常量类。我如何确定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);
答案 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
对象实例。