Confused about inheritance in PHP

Got another job that deals with PHP. I haven't used the language in years and admittedly not made much use of its object orientated facilities during the time I worked with it in the past. As expected even the later additions to PHP have their oddities and pitfalls. For example today I tried to implement the following

001  abstract class BaseClass {
002  
003      private $propertyA;
004      private $propertyB;
005  
006      abstract public function __construct($a, $b);
007      abstract public function output();
008  
009      public function plusOne() {
010          $a = $this->propertyA+1;
011          $b = $this->propertyB+1;
012          $c = $this->propertyC+1;
013          print $a."\n";
014          print $b."\n";
015          print $c."\n";
016      }
017  }
018  
019  class MyClass extends BaseClass {
020      use BaseClassTraits;
021  
022      private $propertyC;
023  
024      public function __construct($a, $b, $c = 0) {
025          $this->propertyA = $a;
026          $this->propertyB = $b;
027          $this->propertyC = $c;
028      }
029  
030      public function output() {
031          print $this->propertyA."\n";
032          print $this->propertyB."\n";
033          print $this->propertyC."\n";
034      }
035  }
036  
037  $c = new MyClass(5, 8, 3);
038  $c->output();
039  $c->plusOne();

My experience with object orientated languages had me expect the program to simply ouput 5, 8, 3, 6, 9, 4. But it turned out to be 5, 8, 3, 1, 1, 4. After a lot of confusion I had come to the premature conclusion that this was the time to use Traits.

001  trait BaseClassTraits {
002  
003      public function plusOne() {
004          $a = $this->propertyA+1;
005          $b = $this->propertyB+1;
006          $c = $this->propertyC+1;
007          print $a."\n";
008          print $b."\n";
009          print $c."\n";
010      }
011  }
012  
013  class MyClass extends BaseClass {
014      use BaseClassTraits;
015  //...

This simple addition (and the removal of plusOne() from the super class) got me the expected result. But after further wringing out my brains I realized all I ever needed to get it working was to change the property of the child class to protected too.
Honestly I'm at a loss of words. I had used the protected keywords on members of super classes before, but somehow missed that it might be necessary the other way around as well. I meant to rant about PHP being a subpar language, but it turns out I was merely being careless and apparently don't have much of a right to complain here. Still the way inheritance works in PHP doesn't sit quite right with me.