Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Автоматически вызывать метод класса при вызове любого другого метода класса
 
 автор: pavluxa09   (31.01.2011 в 22:01)   письмо автору
 
 

Добрый день. Интересует следующий вопрос по статическим классам в PHP. У меня имеется класс вида:

class MyClass { 
 static function MainFunc() {...} 
 static function Test() {...} 
 static function Test2() {...} 



Как сделать, что бы функция MainFunc() вызывалась каждый раз при вызове любой другой функции этого класса.
PS: вариант тупо вызывать её в каждой функции не пройдёт.

  Ответить  
 
 автор: Красная_шляпа   (31.01.2011 в 22:12)   письмо автору
 
   для: pavluxa09   (31.01.2011 в 22:01)
 

расскажи что делать собрался может подскажу а так гадать не пойдет

  Ответить  
 
 автор: pavluxa09   (31.01.2011 в 22:32)   письмо автору
 
   для: Красная_шляпа   (31.01.2011 в 22:12)
 

Хочу сделать статический класс для работы с MYSQLi, в нём будет создаваться один объект класса mysqli и при помощи нашего класса мы будем с ним работать

  Ответить  
 
 автор: Alph[p]a   (31.01.2011 в 22:45)   письмо автору
 
   для: pavluxa09   (31.01.2011 в 22:32)
 

экономте ваш энтузиазм на што то более подходящее... три буквы PDO - юзай.

  Ответить  
 
 автор: Красная_шляпа   (31.01.2011 в 23:23)   письмо автору
 
   для: pavluxa09   (31.01.2011 в 22:32)
 

а тут противоречий нет? класс в нём создается объект... Почему нельзя просто создать объект?

  Ответить  
 
 автор: Саня   (01.02.2011 в 13:15)   письмо автору
 
   для: Красная_шляпа   (31.01.2011 в 23:23)
 

Возможно он хочет lazy initialization.

  Ответить  
 
 автор: Саня   (01.02.2011 в 13:13)   письмо автору
 
   для: pavluxa09   (31.01.2011 в 22:01)
 

Можно задействовать магию:
<?
class StaticClass {

  protected static function 
main() {
    print 
"main() called<br>";
  }
    
  protected static function 
test1() {
    print 
"test1() called<br>";
  }

  protected static function 
test2() {
    print 
"test2() called<br>";
  }
    
  public static function 
__callStatic($name$arguments) {
    if ( 
method_exists(__CLASS__$name) ) {
      
self::main();
      
self::$name($arguments);
    } else {
      throw new 
Exception('Method '.$name.' not exists');
    }
  }

}

StaticClass::test1();
StaticClass::test2();

  Ответить  
 
 автор: pavluxa09   (01.02.2011 в 14:41)   письмо автору
 
   для: Саня   (01.02.2011 в 13:13)
 

Супер! Зачёт! Спасибо!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования