该对象未创建

时间:2014-08-25 22:07:32

标签: php class instantiation

我创建了一个名为“Personnage”(法语字符)的类,它为游戏创建了一个角色。但是,当我创建一个类的实例,一个对象时,它不起作用。我的对象没有创建。我创建了一个名为“salut()”的方法(hi in french),它只包含一个echo。当我打电话给它时,什么也没出现。我也做了对象的var_dump和print_r但没有出现。这是代码:

Personnage.class.php:

<?php

class Personnage
{
//ATRIBUTS
private $_id;
private $_nom;
private $_degats;

//FONCTIONS
public function __construct(array $donnee)
{
    $this->hydrate($donnee);
}

public function hydrate(array $donnee)
{
    foreach($donnee as $key => $value)
    {
        $method = 'set'.ucfirst($key);
        if(method_exists($this, $method))
        {
            $this->$method($value);
        }
    }
}

public function salut()
{
    echo 'SALUT';
}

public function attaquer(Personnage $adversaire)
{
    $adversaire->setDegats($adversaire->getDegats + 5);
    $db = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
    $manager = new PersonnagesManager($db);
    $manager->updateDegats($adversaire);
    $adversaire->mourrir();
}

public function mourrir()
{
    if($this->_degats >= 100)
    {
        $db2 = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
        $manager2 = new PersonnagesManager($db2);
        $manager2->delete($this);
    }
}

//SET
public function setId($id)
{
    if(is_int($id))
    {
        $this->_id = $id;
    }
}

public function setNom($nom)
{
    if(is_string($nom))
    {
        $this->_nom = $nom;
    }
}

public function setDegats($degats)
{
    if(is_int($degats) && $degats >= 0 && $degats <= 100)
    {
        $this->_degats = $degats;
    }
}


//GET
public function getId{ return $this->_id; }
public function getNom{ return $this->_nom; }
public function getDegats{ return $this->_degats; }
}

?>

test2.php:

<?php
session_start();

function chargerClasse($classe)
{
require $classe .'.class.php';
}
spl_autoload_register('chargerClasse');

 $name = 'Pat'
 $perso = new Personnage(array('nom' => $name));
 $perso->salut();
 var_dump($perso);
?>

我的文件位于同一个文件夹中。我没有找到错误,也许你会..?感谢。

1 个答案:

答案 0 :(得分:3)

您的类方法声明中存在语法错误:

public function getId{ return $this->_id; }
public function getNom{ return $this->_nom; }
public function getDegats{ return $this->_degats; }

您缺少括号:

public function getId(){ return $this->_id; }
public function getNom(){ return $this->_nom; }
public function getDegats(){ return $this->_degats; }