PHP "ошибка синтаксического анализа, ожидая`T_STRING' " - Пожалуйста, помогите с кодом

Я пытаюсь построить динамический php-сайт, используя принципы MVC. Я использую WAMP на Win XP.

Вот код:

Index.php:

<?php
  require_once("User.php");
  session_start();
  include ("Header.php");
  include ("Footer.php");
?>

header.php:

<?php
  echo '<?xml version="1.0" encoding="utf-8"?>'
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
  <title><?php echo "temp"; ?></title>
  <link rel="stylesheet" media="screen" type="text/css" title="StyleSheetProjet" href="StyleSheetProjet.css" />
</head>
<body>
  <div class="connectionStatus">
    <?php
    ?>
  </div>

footer.php:

</body>
</html>

User.php:

<?php
  class User {
    private $userName;
    private $hashedPassword;
    private $firstName;
    private $lastName;
    private $userEmail;

    function $getUserName() {
      return $this->userName;
    }
  }
?>

Этот код вызывает ошибку php в строке 9 User.php, т. Е. При объявлении функции get. Сообщение об ошибке:

Parse error: parse error, expecting `T_STRING' in C:\wamp\www\Projet\User.php on line 9

Помощь будет очень ценится....

Спасибо,

JDelage

5 ответов

Решение
function $getUserName()

должно быть

function getUserName()

После function Ключевое слово, PHP ожидает пробел, за которым следует identifier(имя функции). Но в вашем случае он находит variable и это вызывает ошибку разбора.

Внутренне идентификатор называется T_STRING и переменная называется T_VARIABLE, Некоторые интерпретаторы PHP бросают:

Ошибка разбора: синтаксическая ошибка, неожиданный T_VARIABLE, ожидаемый T_STRING ....

Другие, как в вашем случае, просто говорят:

Ошибка разбора: ошибка разбора, ожидание `T_STRING' ....

Вы не можете использовать подстановку переменных при объявлении функций.

Это:

function $getUserName()

должно быть так:

function getUserName()

function$getUserName()

У вас есть опечатка в названии вашей функции. В настоящее время это $getUserName где это должно быть getUserName (без $).

Имена функций не нуждаются в знаке $ в начале.

Сделай так:

function getUserName() {
  return $this->userName;
}
Другие вопросы по тегам