No esperes que en un foro se te pueda explicar como funcionan PPP ( public , private , protected ) aun que lo leas te llevara algo de tiempo para saber como y porque usar cada una de ellos.
Cita: Pero yo podre quitando el public $hola; y funcionaba
Como dijo el colega si no le asignas la visibilidad se le asigna public. Otra cosa es que esto no se deberia de poder de hacer ( usar una variable que pertenece a la clase y no al metodo sin ser definida , pero eso son cosas de PHP )
Si quieres tener una variable que sea de la clase hay que difinir la y si es posible aclarar si es string , integer, array etc. aun que PHP no lo exige.
Código PHP:
<?php
class php(){
public $hola = ""; //string
public $arr = array(); // array
public $integer = 0; // int
public function __construct($hola){
$this->hola = $hola;
}
public function hola(){
echo $this->hola;
}
}
?>
Esto de que PHP te permite hacer una cosa no significa que se debe de hacer o que es correcta .