2016-07-28 2 views
1

Я получаю следующую ошибку для своего кода. Пожалуйста, помогите мне.Предупреждение: Отсутствует аргумент 1 для Personnage :: __ construct()

Предупреждение: Отсутствует аргумент 1 для Personnage :: __ конструкция(), называемый в public_html/PooEnPhp/index.php на линии 24 и определены в 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 я должен иметь возможность инициализировать класс Personnage с использованием подразумеваемого конструктора по умолчанию __construct().

Но я получаю сообщение об ошибке выше. Может ли кто-нибудь объяснить мне, почему?

Благодаря

ответ

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

Вы определили конструктор, который принимает два аргумента whch означает вам необходимо указать эти аргументы при создании экземпляра, например:

$perso = new Personnage($force, $degats); 
Смежные вопросы