The following code works great in a simple PHP file:
class Dad
{
    protected $age = 10;
}
class Son extends Dad 
{
    public function age()
    {
        return $this->age + 10;
    }
}
$dad = new Dad();
$son = new Son();
print_r($son->age());
It prints as expected the value 20, which means the Son class was able to access the $age variable.
Now, switching this code into a Laravel project I end up with something like:
Controller:
class CustomersController extends Controller
{
    public function refresh(Request $request)
    {
        $sale = new \App\Classes\Customer\Sale;
        $sale->setItems($request->items);
        $total = new \App\Classes\Customer\Total;       
        print_r($total->getItems());
    }
}
Class Sale:
namespace \App\Classes\Customer;
class Sale 
{
    protected $items;
    public function setItems($_items)
    {
        $this->items = $_items;
    }
}
Class Total
namespace \App\Classes\Customer;
class Total extends Sale 
{
    public function getItems()
    {
        return $this->items;
    }
}
The result of print_r($total->getItems()) is array(0) {}. This means it can access the variable, but somehow it does not get the value?
I obviously check up if items was actually receiving something and if I change my setItems function into:
public function setItems($_items)
{
    $this->items = $_items;
    print_r($this->items);
}
It prints the value correctly. What am I missing?