Продолжайте получать синтаксическую ошибку в последней скобке моей функции в PHP

#php #methods #compare

#php #методы #Сравнить

Вопрос:

Я пытаюсь написать метод для класса Dorm, который я создал, метод assign_to_dorm() , который принимает один аргумент, который является объектом student .

Этот метод должен выполнять две вещи:

Проверьте, равно ли количество элементов в массиве свойств occupants или больше свойства capacity . Если это так, верните FALSE . Если нет, возьмите объект student и добавьте его как элемент в массив свойств occupants.

 <?php

class Dorm
{
    private $dorm_name;
    private $capacity;
    private $occupants = array();


   public function assign_to_dorm(Student)
   {
       $ammount = count($occupants);

       if($ammount >= $capacity)
       {
            return FALSE;
       } 


    } //    <---------------  KEEP GETTING ERRORS HERE
}

?>
 

Комментарии:

1. Какое полное сообщение об ошибке вы получаете? Кроме того, это единственный код в файле? Синтаксические ошибки в конце файла часто связаны с дальнейшими проблемами…

2. … и о чем эта строка public function assign_to_dorm(Student) ? Конечно, это должно быть public function assign_to_dorm($Student) — плюс, вы, кажется, никогда не используете $Student , и я предполагаю, что $capacity это должно быть $this->capacity , то же самое касается $occupants

3. аргумент, который я пытался передать, был другим классом в том же проекте под названием ‘Student’, я просто подумал, что могу передать его таким образом, нужно ли добавлять $ в начале? Я просто не понимал, что, поскольку я не объявил переменную $student

4. Как вы собираетесь использовать переданное вами значение? Вы не можете получить к ней доступ, если она не сохранена в переменной… Это верно для любого языка, с которым я когда-либо сталкивался…

Ответ №1:

 public function assign_to_dorm(Student)
                               ^^^^^^^---- bare word
 

Ваш параметр — это простое слово, которое не работает. Это должна быть переменная и / или переменная подсказка типа.

Комментарии:

1. аргумент, который я пытался передать, был другим классом в том же проекте под названием ‘Student’, я просто подумал, что могу передать его таким образом, нужно ли добавлять $ в начале? Я просто не понимал, что, поскольку я не объявил переменную $student

2. Вы не можете передать такое имя класса. Параметрами функции PHP должны быть какие-то значения: статические значения, переменные или результаты вызовов функций. Простое слово тоже работает, если это константа define()’d, но вы не можете передать такое имя класса. Вам нужно будет передать фактическую строку : 'Student' .

Ответ №2:

   public function assign_to_dorm($student) //proper variable syntax
   {
       $ammount = count($this->occupants);
       if($ammount >= $this->capacity)  //access members via $this->member_name
       {
            return FALSE;
       } 
    } // 
 

У вас есть 2 ошибки в определении вашей функции:

  • параметр, который вы передаете функции, должен быть $student
  • члены класса должны быть квалифицированы с. $this $occupants является локальной переменной, определенной в области действия функции, $this->occupants является членом класса.

Ответ №3:

На первый взгляд, в вашем списке аргументов для assign_to_dorm вы просто указываете Student, который является классом. Попробуйте Student $student или просто $student.

Комментарии:

1. аргумент, который я пытался передать, был другим классом в том же проекте под названием ‘Student’, я просто подумал, что могу передать его таким образом, нужно ли добавлять $ в начале? Я просто не понимал, что, поскольку я не объявил переменную $student

2. Это нормально для передачи экземпляра класса student, но вам нужно добавить к нему префикс $, который присвоит этот аргумент именованной переменной и позволит вам ссылаться на значение, переданное в функцию как $student .