$property1 // specific variable
$this->property1 // specific attribute
The general use on classes is without "$" otherwise you are calling a variable called $property1 that could take any value.
Example:
class X {
public $property1 = 'Value 1';
public $property2 = 'Value 2';
}
$property1 = 'property2'; //Name of attribute 2
$x_object = new X();
echo $x_object->property1; //Return 'Value 1'
echo $x_object->$property1; //Return 'Value 2'