Bonjour,

Je suis en train de suivre le cours sur le calendrier et j'ai déjà des problèmes avec la construction de classe.
C'est la première fois que je fais de la POO mais j'ai pas mal lu d'autres cours et tutos.

Je poste mon code :

calendrier.php

<!Doctype html>
<html>

<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" 
integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
</head>

<body>

<nav class = "navbar navbar-dark bg-primary mb-3">
<a href="calendrier.php">Planning</a>
</nav>

<?php

require 'Date/Month.php';
 $month = new App\Date\Month(1,2018); ?>

</body>

</htmml>

Et Month.php

<?php

namespace App\Date;

/**
        * Month constructor.
        * @param  $month Le mois compris entre 1 et 12.
        * @param  years L'année.
        * @throws Exception

*/

class Month{

    public fonction __construct($month, $years)
    {
        if($month <1 || $month > 12){
            throw new \Exception (message"Le mois $month n'est pas valide");
        }

        if($years < 1970){
            throw new \Exception(message"L'année est inférieur à 1970");
        }

    }

}

?>

J'obtiens ce message d'erreur :

Parse error: syntax error, unexpected 'fonction' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /htdocs/Date/Month.php on line 17

Après plusieurs essais et test, je ne comprends pas ce que je fais de mal. J'ai regardé sur des tutos comment construire une class et je ne comprends le problème... J'ai aussi lancé l'erreur sur Googl et j'ai rien trouvé. Je crois comprendre qu'il n'aime pas le string dans la fonction et qu'il veut une fonction (ou une constante?) dans la fonction : public fonction __construct($month, $years)

Enfin bref vous avez compris, je suis perdu!

Merci pour l'aide.

4 réponses


Bonsoir,
Ce n'est pas "fonction" en français mais en anglais donc "function"

chrismax
Auteur

C'est dingue d'avoir ça sous le nez depuis des heures et de pas le voir!

Est-ce que je dois mettre que le problème est résolu?

Merci!

oui, puisque le problème est résolu (^_^)

Bonjour.
Par contre, il t'est inutile de faire new App\Date\Month(1,2018);, un simple new Month(1,2018); est suffisant, étant donné que tu charges la classe via un require au lieu d'un use.
Autre chose aussi, le commentaire concernant ton constructeur doit se situer juste avant sa fonction et non avant la classe elle même.
D'ailleurs, dans ce commentaire tu définies @param years, sauf que tu dois indiquer la variable et non juste son nom, soit @param $years.
Ensuite, ceci throw new \Exception (message"Le mois $month n'est pas valide"); est incorrect, d'où te vient ce message ?
Ce n'est pas un typage existant, tu dois donc enlever ce message dans tes deux exception.
Pour finir, au cas où tu ne le saches pas, il est inutile de fermer la balise <?php dans un fichier php qui ne contient que du PHP.