警告:缺少Personnage :: __ construct()的参数1

时间:2016-07-28 11:20:47

标签: php constructor

我的代码收到以下错误。请帮帮我。

  

警告:缺少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类。

但我收到上述错误。有人能解释我为什么吗?

谢谢

3 个答案:

答案 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);