ООП в Php4

  • Автор темы ExtremeRuff
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

ExtremeRuff

#1
Зная что с помощью функции
Код:
register_shutdown_function()
как то можно проэмулировать деструктор, но так и этак но у меня не получатся, может кто знает, как в пхп4 сотворить такое, вот допустим для такого примера-
Код:
Class TDemoClass {
var intCount;
//Конструктор
TDemoClass (){
 $this->intCount=1000;
}
Destructor (){
 unset($this->intCount);
}
}
 
D

develop7

#2
<!--QuoteBegin-ExtremeRuff+19:01:2006, 03:24 -->
<span class="vbquote">(ExtremeRuff @ 19:01:2006, 03:24 )</span><!--QuoteEBegin-->Зная что с помощью функции
Код:
register_shutdown_function()
как то можно проэмулировать деструктор, но так и этак но у меня не получатся, может кто знает, как в пхп4 сотворить такое, вот допустим для такого примера-
Код:
...skipped...
[snapback]29509" rel="nofollow" target="_blank[/snapback]​
[/quote]
Знаете, register_shutdown_function вообще-то слегка для другого предназначена -
Registers the function named by function to be executed when script processing is complete.
По-русски говоря, указанная callback-функция получает управление после завершения работы ВСЕГО скрипта - с include-ми, eval-ами и require. Т.о., для того, чтобы выступать в роли деструктора, ОНО маленько не подходит - неправильно это.
Далее. Реализация механизма деструктора классов - это, батенька, ФПЕАР, читать каменты. И доки. И форум. И ньюсы. И все.
 
A

Andrew Stephanoff

#3
Вот что написано в комментах на php.net
vbwebprofi at gmx dot de (22-Nov-2003 05:12)

Response to => php at spandex dot deleteme dot nildram dot co dot uk 28-Apr-2003 07:43
I have checked the methods to implement destructors in classes and
there is no requirement to use the syntax
$oX = &new Class();
See the code below and try, what fits your PHP-requirements. I have
tested with PHP 4.3.2 on Windows 2000.
Код:
--8<--- cls_TEST.php --------------------------------------------->8--
<?
// Class
class TEST {
 var $Value;
 // Constructor
 function TEST($in_Value = 0){
  // Register destructor
  register_shutdown_function(array(&$this, '_TEST'));
  $this->Value = $in_Value;
  $this->_Log('TEST');
 }
 // Destructor
 function _TEST() {
  $this->_Log('_TEST');
 }
 // Private function
 function _Log($in_Msg) {
  $oF = fopen('E:/temp/TEST.log', 'a');
  fwrite($oF, sprintf("%s : %-5s = %d\n",
            date('Y-m-d H:i:s', time()),
            $in_Msg,
            $this->Value));
  fclose($oF);
 }
}
?>
--8<--- test_TEST.php -------------------------------------------->8--
<?
// include class TEST
include_once('cls_TEST.php');
$o1 = new TEST(1);
$o2 =& new TEST(2);
$o3 &= new TEST(3);
?>
--8<-------------------------------------------------------------->8--
It should produce a content like this in the file, specified in the
_Log function :
Код:
2003-11-22 15:10:43 : TEST = 1
2003-11-22 15:10:43 : TEST = 2
2003-11-22 15:10:43 : TEST = 3
2003-11-22 15:10:43 : _TEST = 1
2003-11-22 15:10:43 : _TEST = 2
2003-11-22 15:10:43 : _TEST = 3
 
G

Guest_ExtremeRuff_*

#4
Andrew Stephanoff, спасибо огромное! То что надо! :(
 
Статус
Закрыто для дальнейших ответов.