Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: PHP5 Object Model  (Прочитано 8174 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 09-07-2003 06:26 » 

Imeetsia takoi kod :

Код:
/* Testirovanie objektnoi modeli v PHP 5.0.0 beta 1 */
  class testing_PHP5_version
  {
    private $x;  // zakritaja peremennaja

    function __construct() // Konstruktor klassa
    {
      echo "<br><br><b>Constructor of testing_PHP5_version class started...</b> <br><br>";
    }

    public function public_function()    // otkritaja funkcija
    {
      print "I am <b>public</b> function!!!<br>";
    }

    protected function protected_function() // zakritaja funkcija dostupnaja tolko klassu i naslednikam
    {
      $this->private_function();
        print "I am <b>protected</b> function!!!<br>";
    }

    private function private_function() // zakritaja funkcija dostupnaja tolko dannomu klassu
    {
      $this->x = 3;
        print "I am <b>private</b> function!!!<br>";
    }

    function __destruct() // Destruktor klassa
    {
      print "<br><br><b>Destructor of testing_PHP5_version class started...</b> <br><br>";
    }
  }

  class testing_PHP5_version2 extends testing_PHP5_version // naslednik klass testing_PHP5_version
  {
    function __construct()
    {
         echo "<br><br><b>Constructor of testing_PHP5_version2 class started...</b> <br><br>";
    }

    public function display() // otkritaja funkcija
    {
      $this->protected_function();
        $this->public_function();
        /* Popitka vizova zakritogo metoda */
        //$this->private_function(); // Ne dolzhno rabotat
    }

    function __destruct()
    {
         print "<br><br><b>Destructor of testing_PHP5_version2 class started...</b> <br><br>";
    }
  }
  $x = new testing_PHP5_version;
  $x->public_function();
  $x2 = new testing_PHP5_version2;
  $x2->display();

/***********************************************************/
class Counter
{
  var $counter = 0;

public function increment_and_print()
    {
      print ++$this->counter;
        print "\n";
    }
}

class SingletonCounter
{
  static $m_instance = NULL;

function Instance()
    {
      if (self::$m_instance == NULL)
        {
          self::$m_instance = new Counter();
        }
    return self::$m_instance;
    }
}

for ($i = 0; $i < 15; $i++)
{
  SingletonCounter::Instance()->increment_and_print();
}

/************************************************************/

Rezultat takoi :
Constructor of testing_PHP5_version class started...
I am public function!!!
Constructor of testing_PHP5_version2 class started...
I am private function!!!
I am protected function!!!
I am public function!!!

//Vot etot moment neponiaten, pochemu snachala otrbativajut poslednie dva klassa i tolko potom rabotajut destruktori Жаль
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // Rezultat raboti poslednih dvuh klassov

Destructor of testing_PHP5_version class started...
Destructor of testing_PHP5_version2 class started...
« Последнее редактирование: 19-11-2007 06:56 от RXL » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-07-2003 07:58 » 

По моему, все правильно - деструктор вызывается при уничтожении объекта: при выходе из области видимости для локальной переменной, или при завершении программы для глобальной. У тебя, судя по этому коду, глобальная переменная.
Это же не perl - php более предсказуемый.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #2 : 09-07-2003 08:09 » 

Hmm...  V principe logichno Улыбаюсь Hotia i ne sovsem poniatno Улыбаюсь))
Spasibo za otvet Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 10-07-2003 07:39 » 

Naportachili oni chto to s etim PHP 5 Жаль polovina fich obeschanih ne rabotaet Жаль
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Fireworm
Гость
« Ответ #4 : 10-07-2003 10:47 » new

так это ж еще и не релиз...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines