print "MyClass::printHello() " . $this->private; print "MyClass::printHello() " . $this->protected; print "MyClass::printHello() " . $this->protected2; } } class MyClass2 extends MyClass { protected $protected = "MyClass2::protected!\n"; function printHello() { MyClass::printHello(); print "MyClass2::printHello() " . $this->public; print "MyClass2::printHello() " . $this->protected; print "MyClass2::printHello() " . $this->protected2; /* Will result in a Fatal Error: */ //print "MyClass2::printHello() " . $this->private; /* Fatal Error */ } } $obj = new MyClass(); print "Main:: " . $obj->public; //print $obj->private; /* Fatal Error */ //print $obj->protected; /* Fatal Error */ //print $obj->protected2; /* Fatal Error */ $obj->printHello(); /* Should print */ $obj2 = new MyClass2(); print "Main:: " . $obj2->private; /* Undefined */ //print $obj2->protected; /* Fatal Error */ //print $obj2->protected2; /* Fatal Error */ $obj2->printHello();
public function test() { $a = new MyClass2("Ankit"); return $a->getName(); }
|-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the Closure to execute when that URI is requested. | */ Route::get('/', function () { return "Welcome to ROBUST"; }); Route::get('/myclass', array('uses' => 'MyclassController@test')); Route::get('/myclass2', array('uses' => 'Myclass2Controller@test')); Route::get('/createMyClass2', function () { $b = new MyClass2("TEST"); return $b->getName(); }); /* Look at the class created by use of namespaces */ Route::get('/student', function () { $a = new \libraryClasses\Student("ANKIT", 68007); return $a->test(); }); /* Direct get the class by use of namespaces */ Route::get('/packagetest', function () { echo \Ankit\Userpackage\Userpackage::greeting(); }); Route::get('/callclass', function () { $a = new MyClass(); return $a->getStatus(); });
$myclass->Foo(); // Работает общий, защищенный и закрытый /** * Определение MyClass2 */ class MyClass2 extends MyClass { // Это общедоступный метод function Foo2() { $this->MyPublic(); $this->MyProtected(); //$this->MyPrivate(); // Неисправимая ошибка } } $myclass2 = new MyClass2(); $myclass2->MyPublic(); // Работает $myclass2->Foo2(); // Работает общий и защищенный, закрытый не работает class Bar { public function test() { $this->testPrivate(); $this->testPublic(); } public function testPublic() { echo "Bar::testPublic\n"; }
/* Should print */ print "MyClass2::printHello() " . $this->Hello; /* Shouldn't print out anything */ print "MyClass2::printHello() " . $this->Bar; /* Shouldn't print (not declared)*/ print "MyClass2::printHello() " . $this->Foo; /* Should print */ } public function aPublicMethod() { echo "Bar::aPublicMethod() called.\n"; $this->aProtectedMethod(); } } $obj = new MyClass(); print $obj->Hello; /* Shouldn't print out anything */ print $obj->Bar; /* Shouldn't print out anything */ print $obj->Foo; /* Shouldn't print out anything */ $obj->printHello(); /* Should print */ $obj = new MyClass2(); print $obj->Hello; /* Shouldn't print out anything */ print $obj->Bar; /* Shouldn't print out anything */ print $obj->Foo; /* Shouldn't print out anything */ $obj->printHello();
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();
{ 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();
{ use HelloWorld { sayHello as protected; } } /** * x */ class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } public function say() { $this->myPrivateHello(); } } /** * x */ class MyClass3 extends MyClass1 { public static function say() { self::sayHello(); } } MyClass3::say(); $myclass = new MyClass2(); $myclass->say();
<?php include_once __DIR__ . "/../vendor/autoload.php"; use useful\traits\Singleton; class MyClass { use Singleton; public $hash; function __construct() { $this->hash = md5(rand()); } } class MyClass2 extends MyClass { use Singleton; // note: without defining, it will use existent instance of class MyClass public function getById() { } } echo MyClass::getInstance()->hash . PHP_EOL; echo MyClass2::getInstance()->hash . PHP_EOL;