<?php
include_once 'arsenal.php';
Class A
{
use arsenal;
function __construct() { echo 'Creating class A as ' . __CLASS__ . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
Class B
{
use arsenal;
function __construct() { echo 'Creating class B as ' . __CLASS__ . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
Class A1
{
function __construct($obj) { echo 'Creating class A1 from ' . get_class($obj) . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
Class A2
{
function __construct($obj) { echo 'Creating class A2 from ' . get_class($obj) . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
Class B1
{
function __construct($obj) { echo 'Creating class B1 from ' . get_class($obj) . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
Class B2
{
function __construct($obj) { echo 'Creating class B2 from ' . get_class($obj) . " \n"; }
function sayHello() { echo 'Hello from class ' . __CLASS__ . " \n"; }
}
$a = new A;
$b = new B;
print_r($a);
print_r($b);
$a->a1->sayHello();
$a->a2->sayHello();
$a->b1->sayHello();
$a->b2->sayHello();
$b->b1->sayHello();
$b->b2->sayHello();
print_r($a);
print_r($b);
$a->a1->sayHello();
$a->a2->sayHello();
$a->b1->sayHello();
$a->b2->sayHello();
$b->b1->sayHello();
$b->b2->sayHello();
$b->a1->sayHello(); // throws error !!
/* Ouputs:
Creating class A as A
Creating class B as B
A Object
(
)
B Object
(
)
Creating class A1 from A
Hello from class A1
Creating class A2 from A
Hello from class A2
Creating class B1 from A
Hello from class B1
Creating class B2 from A
Hello from class B2
Creating class B1 from B
Hello from class B1
Creating class B2 from B
Hello from class B2
A Object
(
[a1] => A1 Object
(
)
[a2] => A2 Object
(
)
[b1] => B1 Object
(
)
[b2] => B2 Object
(
)
)
B Object
(
[b1] => B1 Object
(
)
[b2] => B2 Object
(
)
)
Hello from class A1
Hello from class A2
Hello from class B1
Hello from class B2
Hello from class B1
Hello from class B2
Fatal error: Uncaught Error: Call to a member function sayHello() on null in _test/demo.php:61
Stack trace:
#0 {main}
thrown in _test/demo.php on line 61
*/
?>
|