echo "Hello World!\n"; } } class MyClass1 { use HelloWorld { sayHello as public; } } class MyClass2 { use HelloWorld { sayHello as final; } } class MyClass3 { use HelloWorld { sayHello as protected final; } public function sayHi() { return $this->sayHello(); } } $a = new MyClass1(); $a->sayHello(); $a = new MyClass2(); $a->sayHello(); $a = new MyClass3(); $a->sayHi();
<?php trait HelloWorld { private function sayHello() { echo "Hello World 1!\n"; } } trait HelloWorld2 { public function sayHello2() { echo "Hello World 2!\n"; } } class MyClass1 { use HelloWorld2 { sayHello as public; } use HelloWorld; } $a = new MyClass1(); $a->sayHello(); $a->sayHello2();
{ echo 'Hello World!' . " {$callFrom} \n\n"; } } // Change visibility of sayHello class MyClass1 { use HelloWorld { sayHello as protected; } public function sayHelloMC1() { echo $this->sayHello('MyClass1'); } } // Alias method with changed visibility // sayHello visibility not changed class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } public function sayHelloMC2() { echo $this->myPrivateHello('MyClass2'); } } $oM1 = new MyClass1(); echo $oM1->sayHelloMC1(); $oM2 = new MyClass2(); echo $oM2->sayHelloMC2();
public function sayHello() { echo 'Hello World!'; } } // Change visibility of sayHello class MyClass1 { use HelloWorld { sayHello as protected; } public function test() { $this->sayHello(); } } // Alias method with changed visibility // sayHello visibility not changed class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } } $a = new MyClass1(); //$a->sayHello(); // protected, not gonna work $a->test(); echo PHP_EOL; ?>