Advertisement
dsda

Untitled

Apr 27th, 2013
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.22 KB | None | 0 0
  1. <pre>
  2. <?php
  3. class library {
  4.     // храним классы в массиве
  5.     public static $objects;
  6.    
  7.     // регистрируем новый класс
  8.     public function addClass($className, $classObject) {
  9.         $this->objects[$className] = $classObject;
  10.     }
  11.  
  12.     // вызываем метод объекта класса
  13.     public function callMethod($className, $classMethod, $methodArguments=NULL) {
  14.         if (!isset($this->objects[$className]) || !is_object($this->objects[$className])) {
  15.             exit($className.' Class not registred');
  16.         } else {
  17.             $this->objects[$className]->$classMethod($methodArguments);
  18.         }
  19.        
  20.     }
  21.    
  22.     // показываем все объекты
  23.     public function listClasses() {
  24.         echo "<pre>";
  25.         foreach($this->objects as $k=>$v) {
  26.             echo $k." - ";
  27.             print_r($v);
  28.         }
  29.         echo "</pre>"; 
  30.     }
  31.    
  32. }
  33.  
  34. // описываем первый тестовый класс
  35. class fooClass {
  36.     private $lib; // тут у нас библиотека
  37.     function __construct($lib) {
  38.         $this->lib = $lib;
  39.         echo get_class().' construct'."\n";
  40.     }
  41.     function testFunc($message) {
  42.         echo get_class().' testFunc with '.$message;
  43.     }
  44. }
  45.  
  46.  
  47. // описываем второй тестовый класс
  48. class barClass {
  49.     private $lib; // тут у нас библиотека
  50.     function __construct($lib) {
  51.         $this->lib = $lib;
  52.         echo get_class().' construct'."\n";
  53.     }
  54.     function testFunc() {
  55.         $this->lib->callMethod('foo', 'testFunc', 'message');
  56.     }
  57. }
  58.  
  59. // Создаем объект класса библиотеки
  60. $lib = new library();
  61.  
  62. // Создаем объект первого тестового класса
  63. $foo = new fooClass($lib);
  64.  
  65. // Создаем объект второго тестового класса
  66. $bar = new barClass($lib);
  67.  
  68. // Добавляем первый тестовый класс в библиотеку
  69. $lib->addClass('foo',$foo);
  70.  
  71. // Добавляем второй тестовый класс в библиотеку
  72. $lib->addClass('bar',$bar);
  73.  
  74. // Вызываем метод объекта класса, который в свою очередь вызывает через библиотеку метод первого тестового класса
  75. $bar->testFunc();
  76.  
  77.  
  78. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement