Какова история с переменной $ variable-> в PHP?

Я видел, что это часто используется, особенно с SimpleXML.

Это:

$row->unixtime 

просто так же, как это делать ???

 $row[unixtime] 

Что это называется, почему / как его использовать?

Related of "Какова история с переменной $ variable-> в PHP?"

Объектно-ориентированное программирование с помощью PHP

 $row->unixtime 

$ row – это объект. unixtime является свойством этого объекта.

 $row[unixtime] // I hope you meant $row['unixtime']; 

$ row – это (ассоциированный) массив. unixtime – это ключ в этом массиве.

Спросить «Какие объекты» немного расплывчато.

  • Объектно-ориентированное программирование (Википедия)
  • Как я могу лучше практиковать объектно-ориентированное программирование?
  • Ловушки объектно-ориентированного программирования
  • Когда Object Oriented не является правильным решением?
  • Обучение объектно-ориентированного мышления

Начало работы с ООП – это не тривиальная задача. Для изучения синтаксиса и нюансов требуется некоторое время, чтобы понять преимущества и годы (возможно) эффективно использовать его.

Это совершенно другое дело.

Первый, $row->unixtime означает, что вы $row->unixtime доступ к открытой переменной $unixtime объекта / экземпляра класса $row . Это объектно-ориентированное программирование .

Пример:

 class example{ public $unixtime = 1234567890; } $row = new example(); echo $row->unixtime; // echos 1234567890 

Второй, чтобы получить ключ 'unixtime' массива $row . Это называется ассоциативный массив . Пример:

 $row = array( 'unixtime' => 1234567890 ); echo $row['unixtime']; // echos 1234567890 

Вы можете легко преобразовать объекты и массивы с помощью (array) и (object) . Пример:

 $row = array( 'unixtime' => 1234567890 ); $row = (object)$row; echo $row->unixtime; // echos 1234567890 

Вне темы: Я действительно пропустил эпоху unix 1234567890 в феврале.

Нет, они не то же самое. Речь идет о объектно-ориентированном программировании .

-> указывает на доступ к члену объекта. Например:

 class Test { public $foo; public $blah; } $test = new Test; $test->foo = 'testing'; 

[] – это оператор доступа к массиву, используемый истинными массивами. Объекты также могут использовать его, если они реализуют интерфейс ArrayAccess :

 class Test2 implements ArrayAccess { private $foo = array(); public function offsetGet($index) { return $this->foo[$index]; } // rest of interface } $test2 = new Test2 $test2['foo'] = 'bar'; 

Чтобы ваш ответ был коротким и сладким …

 $row->unixtime 

Это объект

 $row[unixtime] 

Это массив

Вероятно, еще одна идиома вытащила из языка C , на самом деле это то, на чем написан PHP. Многие функции PHP, синтаксис и операторы и даже многие из родных функций PHP имеют свои корни в C.