0

親子クラスがあります。子クラスを開始すると、親コンストラクターが起動されます。これをバイパスするために、子クラスに空のコンストラクターを追加しましたが、運がありません。親コンストラクターは引き続き起動され、タイムアウトエラーが発生します。

class modules {

    public function __construct() {
    global $Analytics;
    //get active modules and add to $modules
    if (is_dir(DIR_FS_CATALOG.$this->modules_folder)) {
        $dirHandle = opendir(DIR_FS_CATALOG.$this->modules_folder);
        while(false !== ($module = readdir($dirHandle))) {
            if (is_dir(DIR_FS_CATALOG.$this->modules_folder.$module) && $module != '.' && $module != '..') {

                //Find the class
                $object = glob(DIR_FS_CATALOG.$this->modules_folder.$module.'/*_module.php');

                //Include the class
                require_once($object[0]);
                //log every step
                $Analytics->abo_analytics_add_action('file', $object[0], 'include');
                //Prepare the variable
                $object = str_replace(DIR_FS_CATALOG.$this->modules_folder.$module.'/', "", $object[0]);
                $object = str_replace('.php', '', $object);
                //remove '_module'
                $class = str_replace('_module', '', $object);

                //initiate modules class if not registered yet
                if (!tep_session_is_registered($class) || !is_object($$class)) {
                    global $$class;
                    $$class = new $class;
                    //log every step
                    $Analytics->abo_analytics_add_action('class', $class, 'initiate');
                    //sort by sort order in modules by type
                    $this->modules[$$class->type][$$class->sort_order] = $class;
                    //log every step
                    $Analytics->abo_analytics_add_action('checkout', $class, 'add to modules', $$class);
                    tep_session_register($class);
                }
            }
        }
    } else {
        //abo_error_message("<span style='color:#FF0000;'>[CHECKOUT MODULES]</span>&nbsp;The specified Module Folder, " . DIR_FS_CATALOG.$this->modules_folder . " does not exist or isn't accesible." );
    }
}
...
}

class checkout extends modules {

    public function __construct() {
        echo 'test';
    }
}


$modules = new modules();
$checkout = new checkout();

どうすればこれを解決できますか?また、知っておくとよいでしょう。オブジェクト「モジュール」は、「チェックアウト」だけでなく、他のさまざまなオブジェクトの親として使用されます。'checkout'オブジェクトにコンストラクターを追加した場合にのみエラーが発生します。チェックアウトでコンストラクターを削除すると、すべてが機能しますが、「modules」オブジェクトが再度開始されます。

4

0 に答える 0