【问题标题】:Fatal error: Uncaught ArgumentCountError: Too few arguments to function Class::__construct(), 0 passed in and at least 1 expected in PHP7.1致命错误:未捕获的 ArgumentCountError:函数 Class::__construct() 的参数太少,传入 0,PHP7.1 中至少需要 1
【发布时间】:2018-10-21 23:40:20
【问题描述】:

我正在学习 PHP,但遇到了一个新问题。如果您能提供帮助,我将不胜感激。

我的代码:

$idTrack = (new Track_Obj)->getIdtCommon($a,$b);

Class Track_Obj{
function __construct( $idtakip, $env = false ) {...}

function getIdtCommon( $idref, $idstudent, $env = false) {...}
}

错误:

未捕获的 ArgumentCountError:函数 Track_Obj::__construct() 的参数太少,传入 0,PHP7.1 中至少需要 1 个

【问题讨论】:

  • $a 不能为空
  • 创建Track_Obj类的对象时必须传递$idtakip
  • 另外,$a 不是空的,它是示例值,你认为像 $a=1。
  • @ jakub wrona 你可以这样说:$idTrack = (new Track_Obj($idtakip))->getIdtCommon($a,$b); ?但我不使用它 $idtakip
  • 解释一下,(new Track_Obj) 或更实际的new Track_Obj() 调用Track_Obj 构造函数。该构造函数有一个必需参数 ($idtakip) 和一个可选参数 ($env)。您需要为$idtakip 提供至少一个参数,例如new Track_Obj($something)。我不建议在创建类实例时省略括号,因为它只会使代码难以阅读,即new Something; ❌ vs new Something(); ✔️

标签: php php-7.1


【解决方案1】:

解决:

新代码:

    $idTrack = (new Track_Obj($idtakip))->getIdtCommon($a,$b);
 or
    $class=new Track_Obj($idtakip);
    $idTrack = $class->getIdtCommon($a,$b);

感谢@Phil 的帮助和解释

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多