2016-07-28 36 views
1

缺少參數1我的代碼正在收到以下錯誤。請幫助我。警告:Personnage :: __ construct()

警告:缺少參數1 Personnage :: __構建體(),在稱爲在線24上的public_html /PooEnPhp/index.php中並在線路中的public_html /PooEnPhp/Personnage.class.php定義22

類文件: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類。

但我得到上面的錯誤。有人可以解釋我爲什麼嗎?

感謝

回答

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; 
    } 
} 

>

這基本上設置默認值參數,所以這將是確定不提供呢? 。

+0

它的工作原理。按照您的答案向構造函數提供默認值後。謝謝。 –

0

因爲構造函數有兩個參數:

public function __construct($force, $degats) { 

,你叫它不帶任何參數:

$perso = new Personnage(); 
0

您已經定義了一個構造函數,兩個參數是指界河您需要在實例化時提供這些參數,例如:

$perso = new Personnage($force, $degats);