#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 .