¿Por qué hay un método constructor si puedes asignar los valores a las variables?

Estoy aprendiendo PHP, y estoy confundido sobre cuál es el propósito del método __construct ()

Si puedo hacer esto:

class Bear { // define properties public $name = 'Bill'; public $weight = 200; // define methods public function eat($units) { echo $this->name." is eating ".$units." units of food... 
"; $this->weight += $units; } }

Entonces, ¿por qué hacerlo con un constructor? :

 class Bear { // define properties public $name; public $weight; public function __construct(){ $this->name = 'Bill'; $this->weight = 200; } // define methods public function eat($units) { echo $this->name." is eating ".$units." units of food... 
"; $this->weight += $units; } }

Porque los constructores pueden hacer una lógica más complicada que lo que puede hacer en la inicialización de la variable. Por ejemplo:

 class Bear { private $weight; private $colour; public __construct($weight, $colour = 'brown') { if ($weight < 100) { throw new Exception("Weight $weight less than 100"); } if (!$colour) { throw new Exception("Colour not specified"); } $this->weight = $weight; $this->colour = $colour; } ... } 

Un constructor es opcional pero puede ejecutar código arbitrario.

Puedes dar variables dinámicas a tu clase:

con:

 public function __construct(name, amount){ $this->name = name; $this->weight = amount; } 

Puede usar su clase para “facturar” y “joe” y usar diferentes valores de montos.

También puede asegurarse de que su clase siempre tendrá todo lo que necesita, por ejemplo, una conexión de base de datos en funcionamiento: su constructor siempre debe exigir todas las necesidades:

 public function __construct(database_connection){ [...] }