Dans le code ci-dessous, j'appelle une fonction (il s'agit justement d'un constructeur) dans laquelle j'ai une indication de type. Quand je lance le code que je reçois l'erreur suivante:Erreur lors de la transmission de la chaîne dans la méthode avec indication de type
Catchable erreur fatale: Argument 1 passé à la question :: __ construct() doit être une instance de chaîne, chaîne donnée, appelée à run.php sur la ligne 3 et défini dans question.php en ligne
D'après ce que je peux dire à l'erreur me dit que la fonction attend une chaîne, mais une chaîne a été adoptée. Pourquoi n'accepte-t-il pas la chaîne transmise?
run.php:
<?php
require 'question.php';
$question = new Question("An Answer");
?>
question.php:
<?php
class Question
{
/**
* The answer to the question.
* @access private
* @var string
*/
private $theAnswer;
/**
* Creates a new question with the specified answer.
* @param string $anAnswer the answer to the question
*/
function __construct(string $anAnswer)
{
$this->theAnswer = $anAnswer;
}
}
?>
C'est parce que tous sont massés scalaires dans l'autre, au besoin en PHP, 0 == false, etc. Tels que, vous ne pouvez pas taper allusion un scalaire. C'est la cause de beaucoup de discussions sur les internes PHP, dont je suis membre. – Fuser97381