Ho fatto qualche modifica, ma continuo a non riuscire a stampare la $var3.
codice:
<?php	trait MyTrait {
		// Proprietà, non ridefinibili nelle classi
		public $var1 = "A";
		protected $var2;
		private $var3;
		// Metodi, ridefinibili nelle classi
		public function function1() {
			echo "function 1"."<br />";
		}
		protected function function2() {
			echo "function 2"."<br />";
		}
		private function function3() {
			echo "function 3"."<br />";
		}
		public static function function4() {
			echo "function 4"."<br />";
		}
		abstract function function5();
		public function setVar3($v) {
			$this->var3 = $v;
		}
	}
	class MyClass {
		use MyTrait;
		public function function5() {
			echo "function 5 ", $this->var1;
		}
		public function writeVar3() {
			echo $this->var3;
		}
	}
	$myClass = new MyClass();
	$myClass->function1(); // output => 'function 1'
	$myClass->setVar3("B");
	$myClass->writeVar3();
	echo $myClass->var1;   // output => 'A'
	echo $myClass->var3;   // errore
?>
Risultato:
function 1A
Fatal error: Cannot access private property MyClass::$var3 in /membri/gaspare/oop/trait.php on line 46