PHP Setters/Getters and Costructor
===

I have been searching for this online, but I can't seem to find something that is clear enough for me to understand. I have seen "similiar" questions on here about this in Java.

    class animal{
        private $name;

        // traditional setters and getters
        public function setName($name){
            $this->name = $name;
        }

        public function getName(){
            return $this->name;
        }

        // animal constructors
        function __construct(){
           // some code here
        }
        
        // vs

        function __construct($name){
            $this->name = $name;
            echo $this->name;
        }
    }
    
    $dog = new animal();
    $dog->setName("spot");
    echo $dog->getName();

    // vs

    $dog = new animal("spot");

 1. Should I declare and access my private fields through setters and getters or through the constructor?
 2. Which one is the best practice?
 3. I understand the purpose of a constructor(maybe not), but what is the point of having a constructor if I can declare and access my private fields through setters and getters? 

Please note...this is my first time using OOP with web development and PHP, and I'm trying to learn by getting my hands "dirty" by writing some code in order for me to understand certain things in OOP. Please keep it simple. 