Что означает знак доллара в PHP?

Что означает знак доллара в PHP? У меня есть этот код:

<?php
  class Building {
    public $number_of_floors = 5;
    private $color;

    public function __construct($paint) {
      $this->color = $paint;
    }

    public function describe() {
      printf('This building has %d floors. It is %s in color.', 
        $this->number_of_floors, 
        $this->color
      );
    }
  }

  $bldgA = new Building('red');

  $bldgA->describe();
?>

Кажется, что $ указывает переменную типа:

$number_of_floors
$color

Но я смущаюсь, когда вижу следующее:

$bldgA->describe();
$bldgA->number_of_floors;

Почему перед этими переменными нет знака доллара?

Ответ 1

Вы правы, $для переменной. Но в экземпляре класса вы больше не используете $properties для свойств, потому что PHP будет интерпретироваться, и это может привести к ошибке. Например, если вы используете

$bldgA->$number_of_floors;

это не вернет свойство $number_of_floors объекта, но PHP сначала рассмотрит значение $number_of_floors, скажем, например 3, поэтому предыдущая строка будет

$bldgA->3;

И это даст вам ошибку

Ответ 2

$ - это способ обращения к переменным в PHP. Переменные в PHP динамически типизируются, что означает, что их тип определяется назначенным им. Здесь страница о variables из руководства по PHP.

$a = "Это строка";

$b = 1;//Это int

$bldgA = новое здание ('red');//bldgA - это переменная и объект (он же экземпляр) класса Building.

$bldgA- > описывают();//Это вызывает describe(), который является функцией-членом класса Building (помните, что $bldgA был объявлен как объект класса Building)

$bldgA- > number_of_floors;//number_of_floors - член данных класса Building. Вы можете рассматривать это как переменную внутри класса, но поскольку она является частью класса с фиксированным именем, вы не ссылаетесь на него с помощью $.

Ответ 3

$bldgA = new Building('red');

в этом случае $bldgA является объектом.

$bldgA->describe();

вызывает функцию describe() из объекта $bldgA

$bldgA->number_of_floors;

присоединяет переменную number_of_floors от объекта $bldgA

но вы действительно должны взглянуть на php.net/manual/en/language.oop5.basic.php

Ответ 4

Да, эта переменная с присвоенным ему экземпляром класса. И когда он объект, то вы вызываете/получаете аргументы так. Читайте об ООП на PHP, пожалуйста. Это может быть очень удобно для вас и помочь вам понять, как это работает:)

Ответ 5

$bldgA является переменной для класса Building

чтобы вы могли получить доступ к функции класса с помощью $Building- > function_name

пример:

$foo = $bldgA->describe();

$number_of_floors - это переменная внутри класса

Ответ 6

$bldgA->number_of_floors; Не вызывает локальную переменную, но свойство (как локальную переменную часть определения класса).

Однако можно вызвать $bldgA->$property_name;, где $property_name - это имя свойства, которое вы хотите вызвать. Это называется переменными переменными и чем-то, что вы, вероятно, должны изучить, после того как вы поняли основы ООП.

Ответ 7

При написании $bldgA = new Building('red'); вы назначаете переменную $bldgA вновь созданный объект класса Building. Объекты - это возможный тип переменных.

В общем случае, когда вы видите $, он всегда ссылается на переменные. $bldgA->number_of_floors; следует читать как: получить доступ к свойству объекта в переменной $bldgA