0


クライアントの Web サイトの 1 つを新しいホスティング会社に移動します。
新しいホスティング会社は PHP 5.3.14
を使用しています PHP 5.1.6 を実行する会社のテスト マシンでこのサイトをテストしたところ、すべて正常に動作しました。
ただし、サイトを新しいホスティング会社のサーバーに移動すると、次のエラーが発生しました。

致命的なエラー: 20 行目の /var/www/html/nna_test/data/class_core/db/DAO_gate.php の未定義メソッド DAOtemplate_Ex::DAOparent_Ex() の呼び出し

ここに私のDAO_gate.phpがあります

<?php
require_once CLASS_CORE_EX_REALDIR . 'db_extends/DAOtemplate_Ex.php';
class DAO_gate extends DAOtemplate_Ex
{
    function DAO_gate( $value1="" ) 
    {
        parent::DAOparent_Ex(); ---***LINE 20***---

        $this->m_tablename = "dtb_gate";
        $this->m_struct = array();
        $this->m_struct_foreignKey = array();
        $this->m_struct_foreignKey_target = array();

        // get: table struct.
        $this->CDB->SetQuery( "show full columns from ". $this->m_tablename );
        $this->CDB->ExecQuery();
        while( $row = $this->CDB->GetRecord() ) {
            $this->m_struct[] = $row;
        }
        $this->init();
    }
.blah
.blah
.blah    
}

また、DAO_gate.php が拡張する DAOtemplate_Ex は次のとおりです。

<?php
// {{{ requires
require_once CLASS_CORE_REALDIR . 'db/DAOtemplate.php';


class DAOtemplate_Ex extends DAOtemplate 
{

}
?>

DAOtemplate_Ex は DAOtemplate を拡張します

<?php
require_once CLASS_CORE_EX_REALDIR . 'db_extends/DAOparent_Ex.php';
class DAOtemplate extends DAOparent_Ex
{
    var $m_tablename;
    var $m_struct;
    var $m_struct_foreignKey;   
    var $m_struct_foreignKey_target;

    function DAOtemplate( $value1="" ) 
    {
        parent::DAOparent_Ex();

        $this->m_tablename = "";
        $this->m_struct = array();
        $this->m_struct_foreignKey = array();
        $this->m_struct_foreignKey_target = array();

        $this->CDB->SetQuery( "show full columns from ". $this->m_tablename );
        $this->CDB->ExecQuery();
        while( $row = $this->CDB->GetRecord() ) {
            $this->m_struct[] = $row;
        }
        $this->init();
    }
.blah
.blah
.blah 
}

DAOparent_Ex :

<?php
require_once CLASS_CORE_REALDIR . 'db/DAOparent.php';
class DAOparent_Ex extends DAOparent 
{

}
?>

そして最後に DAOparent :

<?php
require_once CLASS_CORE_REALDIR . 'db/SC_DBFactory.php';
class DAOparent 
{
    var $CDB;
    var $m_use_sql;
    function DAOparent() 
    {
        if( empty( $value1 ) ) 
        {
            $this->CDB = SC_DBFactory::GetInstance( DB_TYPE );

            $this->CDB->SetDBType( DB_TYPE );
            $this->CDB->SetHost( DB_SERVER );
            $this->CDB->SetDBName( DB_NAME );
            $this->CDB->SetUserName( DB_USER );
            $this->CDB->SetPassword( DB_PASSWORD );
            $this->CDB->SetCharaCode( DB_ENCODING );
        } else {
            if( is_object( $value1 ) ) 
            {
                $this->CDB = $value1;
            } else {
                // error: 
                print( "connect faild." ); 
                die();
            }
        }
        $this->CDB->Connect();
        $this->m_use_sql = array( "select", "update", "insert", "delete", "begin", "rollback" );

        $this->init();
    }
    function init() 
    {

    }
.blah
.blah
.blah 
}

誰も問題を知っていますか?
空のクラスが原因だと思いました。
そして、このような長いコードを投稿して申し訳ありません。

4

1 に答える 1

0

あなたのコードを見ると、PHPは正しいと思います!親クラスにはメソッド はありません。DAOparent_Ex

なぜPHP5.1で合格したのかわかりませんが、おそらくPHP5.3の方が厳密です。

bij呼び出しを達成しようとしていますparent::DAOparent_Ex()か?__constructDAOparent_Ex()クラスのを呼び出しますか?

于 2012-09-12T07:21:13.210 に答える