我的代码收到以下错误。请帮帮我。
警告:缺少Personnage :: __ construct()的参数1,调用 第24行的public_html / PooEnPhp / index.php并在中定义 第22行的public_html / PooEnPhp / Personnage.class.php
类文件:Personnage.class.php
<?php
class Personnage {
private $_force = 20;
private $_localisation = 'Lyon';
private $_experience = 0;
private $_degats = 0;
// Create a connstructor with two arguments
public function __construct($force, $degats) {
echo 'Voici le constructeur ! ';
$this->_force = $force;
$this->_degats = $degats;
}
实例化Personnage类的文件:index.php
<?php
function chargerClasse($classe) {
require $classe . '.class.php';
}
//autoload the function chargerClasse
spl_autoload_register('chargerClasse');
// instantiate the Personnage class using the default constructor (the one implied without argument)
$perso = new Personnage();
通常在index.php中我应该能够使用隐含的默认构造函数__construct()来实现Personnage类。
但我收到上述错误。有人能解释我为什么吗?
谢谢
答案 0 :(得分:2)
问题在于:
// Create a connstructor with two arguments
public function __construct($force, $degats) {
echo 'Voici le constructeur ! ';
$this->_force = $force;
$this->_degats = $degats;
}
$force
和$degates
都设置为必填参数。
为了能够通过设置任何参数来调用new Personnage()
,您必须将课程更改为:
<?php
class Personnage {
private $_force = 20;
private $_localisation = 'Lyon';
private $_experience = 0;
private $_degats = 0;
// Create a connstructor with two arguments
public function __construct($force = 20, $degats = 0) {
echo 'Voici le constructeur ! ';
$this->_force = $force;
$this->_degats = $degats;
}
}
&GT;
这基本上设置了参数的默认值,因此可以不提供它们。
答案 1 :(得分:0)
因为构造函数需要两个参数:
public function __construct($force, $degats) {
你没有任何争论就叫它:
$perso = new Personnage();
答案 2 :(得分:0)
您已经定义了一个带有两个参数的构造函数,这意味着您需要在实例化时提供这些参数,例如:
$perso = new Personnage($force, $degats);