Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <pre>
- <?php
- class library {
- // храним классы в массиве
- public static $objects;
- // регистрируем новый класс
- public function addClass($className, $classObject) {
- $this->objects[$className] = $classObject;
- }
- // вызываем метод объекта класса
- public function callMethod($className, $classMethod, $methodArguments=NULL) {
- if (!isset($this->objects[$className]) || !is_object($this->objects[$className])) {
- exit($className.' Class not registred');
- } else {
- $this->objects[$className]->$classMethod($methodArguments);
- }
- }
- // показываем все объекты
- public function listClasses() {
- echo "<pre>";
- foreach($this->objects as $k=>$v) {
- echo $k." - ";
- print_r($v);
- }
- echo "</pre>";
- }
- }
- // описываем первый тестовый класс
- class fooClass {
- private $lib; // тут у нас библиотека
- function __construct($lib) {
- $this->lib = $lib;
- echo get_class().' construct'."\n";
- }
- function testFunc($message) {
- echo get_class().' testFunc with '.$message;
- }
- }
- // описываем второй тестовый класс
- class barClass {
- private $lib; // тут у нас библиотека
- function __construct($lib) {
- $this->lib = $lib;
- echo get_class().' construct'."\n";
- }
- function testFunc() {
- $this->lib->callMethod('foo', 'testFunc', 'message');
- }
- }
- // Создаем объект класса библиотеки
- $lib = new library();
- // Создаем объект первого тестового класса
- $foo = new fooClass($lib);
- // Создаем объект второго тестового класса
- $bar = new barClass($lib);
- // Добавляем первый тестовый класс в библиотеку
- $lib->addClass('foo',$foo);
- // Добавляем второй тестовый класс в библиотеку
- $lib->addClass('bar',$bar);
- // Вызываем метод объекта класса, который в свою очередь вызывает через библиотеку метод первого тестового класса
- $bar->testFunc();
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement