奇怪的类成员函数行为

时间:2013-06-12 08:47:16

标签: php class-members

PHP类有一个奇怪的问题。如果我这样做:

$message= new Message();
$message->load(43);

它不起作用,脚本不提供网页。

但如果我这样做:

$message=new Message();
$message->loadMessageBasics(43);
$message->loadMessageMembers(43);
$message->loadMessageStates(43);

然后print_r($ message)就给出了我的预期。

有人可以告诉我我做错了吗?

这是Message类文件。

提前致谢!

<?php

    class Message
    {
        public $id;
        public $recipients;
        public $sender;
        public $subject;
        public $body;
        public $creationDate;
        public $msgStates;

        function __construct() {
        }

        public function load($mid){
            $this->loadMessageBasics($mid);
            $this->loadMessageMembers($mid);
            $this->loadMessageStates($mid);

        }

        public function loadMessageBasics($mid){
            try{

                $db=initdb();
                $result=$db->run("SELECT id, feladoid, targy, szovegtorzs, l_idopont FROM messages WHERE id=".$mid);
                foreach($result as $row){
                    extract($row);
                    $this->id=$id;
                    $sender=new User();
                    $sender->load($feladoid);
                    $this->sender=$sender;
                    $this->subject=$targy;
                    $this->body=$szovegtorzs;
                    $this->creationDate=$l_idopont;
                }
                $db=null;

            }
            catch(Exception $e){
                echo("Hiba: ".$e->getMessage());
            }
        }

        public function loadMessageMembers($mid){
            try{
                $db=initdb();
                $result=$db->run("SELECT id, tagkod, tagid, l_idopont, m_idopont FROM members WHERE modulkod=11 AND modulid=".$mid);
                foreach($result as $row){
                    extract($row);
                    $newRecipient= new Member();
                    $newRecipient->id=$id;
                    $newRecipient->tagkod=$tagkod;
                    $newRecipient->tagid=$tagid;
                    $newRecipient->l_idopont=$l_idopont;
                    $newRecipient->m_idopont=$m_idopont;
                    $this->recipients[]=$newRecipient;
                    echo("<PRE>");
                    print_r($newRecipient);
                    echo("</PRE>");
                }
                $db=null;

            }
            catch(Exception $e){
                echo("Hiba: ".$e->getMessage());
            }


        }
        public function loadMessageStates($mid){
            try{
                $db=initdb();
                $result=$db->run("SELECT id, uzenetid, userid, mappakod, o_idopont, m_idopont FROM msgstates WHERE uzenetid=".$mid);
                foreach($result as $row){
                    extract($row);
                    $newState= new MsgState();
                    $newState->id=$id;
                    $newState->uzenetid=$uzenetid;
                    $newState->userid=$userid;
                    $newState->mappakod=$mappakod;
                    $newState->o_idopont=$o_idopont;
                    $newState->m_idopont=$m_idopont;
                    $this->msgStates[]=$newState;
                }
                $db=null;

            }
            catch(Exception $e){
                echo("Hiba: ".$e->getMessage());
            }


        }

    }
?>

更新:

似乎问题出在XAMPP Apache或PHP部分。服务器应用程序事件日志说:

Napló neve:    Application
Forrás:        Application Error
Dátum:         2013.06.13. 9:03:55
Eseményazonosító:1000
Feladatkategória:(100)
Szint:         Hiba
Kulcsszavak:   Klasszikus
Felhasználó:   n.a.
Számítógép:    SZENTENDRE.iirf.hu
Leírás:
A hibát okozó alkalmazás neve: httpd.exe, verzió: 2.4.3.0, időbélyeg: 0x502f70a3
A hibát okozó modul neve: php5ts.dll, verzió: 5.4.7.0, időbélyeg: 0x505114f8
Kivételkód: 0xc0000005
Hiba pozíciója: 0x0004e399
A hibát okozó folyamat azonosítója: 0x860
A hibát okozó alkalmazás indításának időpontja: 0x01ce680080b003fa
A hibát okozó alkalmazás elérési útja: C:\xampp\apache\bin\httpd.exe
A hibát okozó modul elérési útja: C:\xampp\php\php5ts.dll
Jelentés azonosítója: 68aa9b7c-d3f7-11e2-a808-00241d779aba
Esemény XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2013-06-13T07:03:55.000000000Z" />
    <EventRecordID>10202</EventRecordID>
    <Channel>Application</Channel>
    <Computer>SZENTENDRE.iirf.hu</Computer>
    <Security />
  </System>
  <EventData>
    <Data>httpd.exe</Data>
    <Data>2.4.3.0</Data>
    <Data>502f70a3</Data>
    <Data>php5ts.dll</Data>
    <Data>5.4.7.0</Data>
    <Data>505114f8</Data>
    <Data>c0000005</Data>
    <Data>0004e399</Data>
    <Data>860</Data>
    <Data>01ce680080b003fa</Data>
    <Data>C:\xampp\apache\bin\httpd.exe</Data>
    <Data>C:\xampp\php\php5ts.dll</Data>
    <Data>68aa9b7c-d3f7-11e2-a808-00241d779aba</Data>
  </EventData>
</Event>

(抱歉,这是匈牙利语)

Apache事件日志在崩溃后一直说:

[Thu Jun 13 09:03:55.233443 2013] [mpm_winnt:notice] [pid 4252:tid 396] AH00428:     Parent: child process exited with status 255 -- Restarting.
[Thu Jun 13 09:03:55.826244 2013] [mpm_winnt:notice] [pid 4252:tid 396] AH00455: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 configured -- resuming normal operations
[Thu Jun 13 09:03:55.826244 2013] [mpm_winnt:notice] [pid 4252:tid 396] AH00456: Server built: Aug 18 2012 12:41:37
[Thu Jun 13 09:03:55.826244 2013] [core:notice] [pid 4252:tid 396] AH00094: Command line: 'C:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Thu Jun 13 09:03:55.826244 2013] [mpm_winnt:notice] [pid 4252:tid 396] AH00418: Parent: Created child process 2288
[Thu Jun 13 09:03:57.245846 2013] [mpm_winnt:notice] [pid 2288:tid 288] AH00354: Child: Starting 150 worker threads.

任何人都有任何建议我该怎么办?

0 个答案:

没有答案