Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dlaczego exit nie dziala jak nalezy?, pytanie retoryczne
qbs
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 1
Dołączył: 22.09.2008

Ostrzeżenie: (0%)
-----


witam wszystkich z gory na dol.
w dniu dzisiejszym, wraz z kumplem od spizowego kufla udalo nam sie znalezc pewna bardzo przykra rzecz. co prawda 99% osob ma to gdzies, jak i ja dotychczas, lecz w swojej ulomnosci nawet nie zdawalem sobie sprawy ze funkcja oferowana przez php, jaka jest exit() jest niezbyt poprawna. mianowicie, dziala ona w identyczny sposob jak die() i w brew temu co pisze w dokumentacji, mozna je bezczelnie obejsc. oczywiscie nie ma to wplywu na dzialanie poprawnie napisanego kodu, lecz dla osob poczatkujacych moze to byc zwyczajny "kwas" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

nie wiem czemu bylem przekonany, ze funkcja exit, zabija z miejsca watek w ktorym wykonywany jest skrypt (w przeciwienstwie do die ktory pozwala jeszcze destruktorom na dzialanie).

chcialem przez ten post zapytac czy jest cos co moglem pominac w dokumentacji, na tym forum tudziez konfiguracji php?

dla leniwych wrzucam kod (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Kod
<?php

class innaklasa
{

    public function __construct()
    {
    
        print "inna klasa<br />";
    }

    public function zrob()
    {
    
        try
        {
            
            throw new exception("test");
        }
        catch(Exception $e)
        {

            print "<pre>";
            print_r($e);
        }
    }
}

class klasa
{

    public function __construct()
    {
        
        print "konstruktor<br />";
    }
    public function __destruct()
    {

        print "destruktor<br />";
        $innaklasa = new innaklasa;
        $innaklasa->zrob();
    }
}

$c = new klasa;
exit;


Ten post edytował qbs 23.09.2008, 13:32:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


a tak przy okazji, pobawiłem się chwilę i znalazłem sposób na przerwanie skryptu bez odpalania destruktorów obiektów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) wystarczy wygenerować FATAL ERROR (np. wywołanie niezdefiniowanej funkcji) i przykryć jego skutki operatorem @ ... to działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
  1. <?php
  2. class innaklasa
  3. {
  4.    public function __construct()
  5.    {
  6.        print "inna klasa<br />";
  7.    }
  8.  
  9.    public function zrob()
  10.    {
  11.        try
  12.        {
  13.            throw new exception("test");
  14.        }
  15.        catch(Exception $e)
  16.        {
  17.            print "<pre>";
  18.            print_r($e);
  19.        }
  20.    }
  21. }
  22.  
  23. class klasa
  24. {
  25.    public function __construct()
  26.    {
  27.        print "konstruktor<br />";
  28.    }
  29.  
  30.    public function __destruct()
  31.    {
  32.        print "destruktor<br />";
  33.        $innaklasa = new innaklasa;
  34.        $innaklasa->zrob();
  35.    }
  36. }
  37.  
  38. $c = new klasa;
  39. @stop();
  40. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 19:18