2014-02-10 3 views
0

Я знаю, что это синтаксическая ошибка, но я не понимаю, что случилось с тем, что я сделал. ОшибкаЯ не понимаю, почему Im получает эту ошибку

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '{' or '$' on line 8

и код

class Person { 
    public $isAlive=true; 
    public $firstname; 
    public $lastname; 
    public $age; 
    public function __construct() 
    { 
    $teacher->"boring"=$firstname; 
    $teacher->"12345"=$lastname; 
    $teacher->12345=$age; 
    $student->"Natalie Euley"=$firstname; 
    $student->"Euley"=$lastname; 
    $student->19=$age; 
    } 
    public function greet() 
    { 
    return "Hello, my name is ".$this->firstname." ".$this->lastname. "Nice to meet you!"; 
    } 
    } 
    $student = new Person(); 
    $teacher = new Person(); 
    echo $student->greet(); 
    echo $techer->greet(); 

теперь я понимаю. CodeAcademy запутывает направления. Я понимаю, как это сделать сейчас. Спасибо, что все объяснили!

+2

Ваш член класса назначения переменного недействительны синтаксис.Фактически, они обратные. Я этого раньше не видел. –

+0

его впечатляющая попытка ошибочности –

+1

@ Дагон: Как это конструктивно? Каждый был новичком один раз, и ** люди не рождаются, зная PHP и его синтаксис **. Я согласен, что это вопрос низкого качества, но я лично считаю, что такие комментарии грубые/вредные и имеют нулевую актуальность. –

ответ

4

Вы должны делать это:

$teacher->"boring" = $firstname; 

так:

$this->firstname = "boring"; 

И за то, как вы имеете остальной код, что-то вроде этого является то, что вы ищете:

public function __construct($firstname, $lastname, $age) 
{ 
    $this->firstname = $firstname; 
    $this->lastname = $lastname; 
    $this->age  = $age; 
} 

$teacher = new Person("John", "Smith", 45); 
1

Ваш синтаксис неверен.

$this->firstname = "boring"; 
$this->lastname = "12345"; 

Мы используем "это", если вы назначаете эти значения класса вы находитесь.

Он идет

$object->variable = value; 
1

Это неправильно

$teacher->"boring"=$firstname; 
$teacher->"12345"=$lastname; 
$teacher->12345=$age; 
$student->"Natalie Euley"=$firstname; 
$student->"Euley"=$lastname; 
$student->19=$age; 

должны быть

$teacher->firstname = "boring"; 
$teacher->lastname = "12345"; 
$teacher->age = 12345; 
$student->firstname = "Natalie Euley"; 
$student->lastname ="Euley"; 
$student->age = 19; 

чек здесь

http://www.php.net/manual/en/language.oop5.php

1

Такие вещи, как это:

$student->"Natalie Euley"=$firstname; 

не является действительным. Возможно, вы имели в виду

$student->firstname = "Natalie Euley"; 

Вы не можете использовать "string" в качестве объекта ключа ссылки, как это. Но вы могли бы использовать:

$student->{"Natalie Euley"} = $firstname 
      ^--    ^--note the brackets 

Однако, это все еще обратное. Задания должны быть сделаны key => $value, тогда как вы делаете $value => key, что является басом.

0

У вас есть синтаксические ошибки в вашем методе конструктора. Например, следящие строки некорректного кода PHP:

$student->"Natalie Euley"=$firstname; 

Я рекомендую прочитать официальную документацию на http://www.php.net/manual/en/language.oop5.php

После улучшения кода вам пример работает просто отлично:

class Person { 
    public $isAlive = true; 
    public $firstName; 
    public $lastName; 
    public $age; 

    public function __construct($firstName, $lastName, $age) { 
     $this->firstName = $firstName; 
     $this->lastName = $lastName; 
     $this->age = $age; 
    } 

    public function greet() { 
     return 'Hello, my name is ' . $this->firstName . ' ' . $this->lastName . 
      ' and I\'m '. $this->age . ' years old. Nice to meet you!'; 
    } 
} 

$student = new Person('Max', 'Kid', 19); 
$teacher = new Person('Albert', 'Einstein', 60); 
echo $student->greet() . "\n"; 
echo $teacher->greet(); 
Смежные вопросы