Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по ООП 
:(
    Опции темы
DiFor
Дата 7.6.2011, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.2.2011

Репутация: нет
Всего: нет



появилась необходимость сделать профилирование нескольких небольших проектов без использования стороннего софта аля xDebug и XHprof. Посему был написан сей небольшой пример:
Код

class test {
    
    protected function start_class($str){        
        echo  $str. ' constructor<br>';
    }
    
    public function __construct() {
        $this->start_class(__CLASS__);
    }

    function __destruct() {
        echo __CLASS__ . ' destructor<br>';
    }

}

class test2 extends test {

    function __construct() {
        parent::__construct();
        $this->start_class(__CLASS__);
    }

    function __destruct() {
        echo __CLASS__ . ' destructor<br>';
        parent::__destruct();
    }

}

new test2;
echo '<br>';
new test;
Проблема сама в том, что при наследовании одного класса другим, необходимо ставить профиль метки в конструкторе и деструкторе класса. по логике при наследовании конструктором свойств от родительского конструктора (parent::__construct();) должны запускаться и методы указанные в родитльском. на практике такого не происходит. плюс было-бы совсем идеально еще и отлавливать вызовы методов класса. при попытке сделать перегруз, столкнулся с тем, что мозможно сделать отлов вызова метода лишь в том случае, если он не существует через служебный метод __call. хотелось бы сделать аналогично что-бы перед вызовом метода стабился тэг со служебной информацией, после завершения работы метода, тэг закрывался со служебной информацие. есть ли возможность сие сделать? вчера перелопатил маны по ооп в пхп5, но ничего внятного не нашел
PM MAIL   Вверх
DiFor
Дата 7.6.2011, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 25.2.2011

Репутация: нет
Всего: нет



маленький фикс. часть проблемы решена, осталась лишь часть с перегрузом методов
Код

class test {

    protected function start_class($str) {
        echo $str . ' constructor<br>';
    }

    protected function stop_class($str) {
        echo $str . ' destructor<br>';
    }

    public function __construct() {
        $str = (func_num_args()) ? func_get_arg(0) : __CLASS__;
        $this->start_class($str);
    }

    function __destruct() {
        $str = (func_num_args()) ? func_get_arg(0) : __CLASS__;
        $this->stop_class($str);
    }

}

class test2 extends test {

    function __construct() {
        parent::__construct(__CLASS__);
    }

    function __destruct() {
        parent::__destruct(__CLASS__);
    }

}

$var1 = new test;
$var2 = new test2;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.