Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复致命错误:无法重新声明';它只在麦金塔上?_Php_Macos_Qcodo - Fatal编程技术网

Php 如何修复致命错误:无法重新声明';它只在麦金塔上?

Php 如何修复致命错误:无法重新声明';它只在麦金塔上?,php,macos,qcodo,Php,Macos,Qcodo,仅当我在Macintosh上运行时,而不是在windows浏览器上运行时,才会出现此致命错误,这是没有意义的,因为除了检查浏览器条件外,条件循环运行相同的代码: 有人能帮我理解如何在php中停止这个错误吗?错误发生在QEnterKeyEvent的第一个实例上,而不是第二个实例上。这没有道理 在代码中,第一个实例是第一次调用它,因此据我所知,该类尚未创建 但错误是:无法重新声明类QEnterKeyEvent // Key-Specific Events (EnterKey, EscapeKey,

仅当我在Macintosh上运行时,而不是在windows浏览器上运行时,才会出现此致命错误,这是没有意义的,因为除了检查浏览器条件外,条件循环运行相同的代码:

有人能帮我理解如何在php中停止这个错误吗?错误发生在QEnterKeyEvent的第一个实例上,而不是第二个实例上。这没有道理

在代码中,第一个实例是第一次调用它,因此据我所知,该类尚未创建

但错误是:无法重新声明类QEnterKeyEvent

// Key-Specific Events (EnterKey, EscapeKey, UpArrowKey, DownArrowKey, etc.)

if (QApplication::IsBrowser(QBrowserType::Macintosh)) {
    echo "keyspecific events - macintosh";

    class QEnterKeyEvent extends QKeyPressEvent {
        protected $strCondition = 'event.keyCode == 13';
    }
    class QEscapeKeyEvent extends QKeyPressEvent {
        protected $strCondition = 'event.keyCode == 27';
    }
    class QUpArrowKeyEvent extends QKeyPressEvent {
        protected $strCondition = 'event.keyCode == 38';
    }
    class QDownArrowKeyEvent extends QKeyPressEvent {
        protected $strCondition = 'event.keyCode == 40';
    }
} else {
    echo "key specific events - windows";

    class QEnterKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 13';
    }
    class QEscapeKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 27';
    }
    class QUpArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 38';
    }
    class QDownArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 40';
    }
}

两个代码块定义相同的类:

class QEnterKeyEvent extends QKeyDownEvent {
            protected $strCondition = 'event.keyCode == 13';
}
从您给出的示例代码来看,完全在if/else语句之外定义该类更有意义,这将减少维护和解决错误的代码量

但是,我怀疑您在阅读代码时可能与大括号不匹配;粘贴代码段时,不应出现错误

如果第二个类定义与第一个类定义同时出现(因为它们不是同一个条件的一部分),那么您可能会看到该错误

如果您决定不重新构造代码以避免重复(对于当前结构,您可能有充分的理由,这些理由在您给出的代码段中没有指出),您可以使用PHP来避免复制类定义的尝试:

} else {
  if ( !class_exists('QEnterKeyEvent') ) {
    class QEnterKeyEvent extends QKeyDownEvent {
      protected $strCondition = 'event.keyCode == 13';
    }
  }
}
如果您确实使用这种方法,那么仔细检查类的定义是否符合您在所有情况下的预期是有意义的

这是来自QCodo代码库的代码样本吗?如果是这样,您可能应该通过他们的


PPS。哦,看。请参见和…

两个代码块定义了相同的类:

class QEnterKeyEvent extends QKeyDownEvent {
            protected $strCondition = 'event.keyCode == 13';
}
从您给出的示例代码来看,完全在if/else语句之外定义该类更有意义,这将减少维护和解决错误的代码量

但是,我怀疑您在阅读代码时可能与大括号不匹配;粘贴代码段时,不应出现错误

如果第二个类定义与第一个类定义同时出现(因为它们不是同一个条件的一部分),那么您可能会看到该错误

如果您决定不重新构造代码以避免重复(对于当前结构,您可能有充分的理由,这些理由在您给出的代码段中没有指出),您可以使用PHP来避免复制类定义的尝试:

} else {
  if ( !class_exists('QEnterKeyEvent') ) {
    class QEnterKeyEvent extends QKeyDownEvent {
      protected $strCondition = 'event.keyCode == 13';
    }
  }
}
如果您确实使用这种方法,那么仔细检查类的定义是否符合您在所有情况下的预期是有意义的

这是来自QCodo代码库的代码样本吗?如果是这样,您可能应该通过他们的


PPS。哦,看。请参阅和…

我看到此代码示例来自QCodo代码库?在这种情况下,你可能应该通过他们的网站报告这个问题。在那里看了之后,我看到已经有一些报告了:而且

以下是完整的代码块(来自Qcodo网站上的论坛帖子):

所以在第二次阅读时,我相信问题不是这段代码同时命中了两个类定义,而是这段代码实际上被调用了两次。如果Qcodo被初始化两次,看起来(从Qcodo上看)会发生这种情况

在QApplicationBase::Initialize()中,有以下代码:

  // Preload Class Files
  foreach (QApplication::$PreloadedClassFile as $strClassFile)
      require($strClassFile);
尝试用下面的代码替换,看看问题是否得到解决?如果是这样,您可能在代码中的某个地方无意中初始化了两次Qcodo

  // Preload Class Files
  foreach (QApplication::$PreloadedClassFile as $strClassFile)
      require_once($strClassFile);

我看到这个代码示例来自QCodo代码库?在这种情况下,你可能应该通过他们的网站报告这个问题。在那里看了之后,我看到已经有一些报告了:而且

以下是完整的代码块(来自Qcodo网站上的论坛帖子):

所以在第二次阅读时,我相信问题不是这段代码同时命中了两个类定义,而是这段代码实际上被调用了两次。如果Qcodo被初始化两次,看起来(从Qcodo上看)会发生这种情况

在QApplicationBase::Initialize()中,有以下代码:

  // Preload Class Files
  foreach (QApplication::$PreloadedClassFile as $strClassFile)
      require($strClassFile);
尝试用下面的代码替换,看看问题是否得到解决?如果是这样,您可能在代码中的某个地方无意中初始化了两次Qcodo

  // Preload Class Files
  foreach (QApplication::$PreloadedClassFile as $strClassFile)
      require_once($strClassFile);

我在尝试为客户端安装XSilva的Lightspeed Webstore时遇到了同样的问题。经过一些挖掘和测试,我想我已经解决了这个问题。(仅供参考,简单地将'require'更改为'require_once'——虽然这是一个好主意——对我来说并不奏效。)我知道这是一个难看的黑客行为,但我用类_exists()检查包装了有问题的代码块,如下所示:

// Key-Specific Events (EnterKey, EscapeKey, UpArrowKey, DownArrowKey, etc.)
if (QApplication::IsBrowser(QBrowserType::Macintosh)) {
    if(!class_exists('QEnterKeyEvent') and !class_exists('QEscapeKeyEvent') and !class_exists('QUpArrowKeyEvent') and !class_exists('QDownArrowKeyEvent')) {
        class QEnterKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 13';
        }   
        class QEscapeKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 27';
        }   
        class QUpArrowKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 38';
        }   
        class QDownArrowKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 40';
        }   
    }   
} else {
    class QEnterKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 13';
    }   
    class QEscapeKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 27';
    }   
    class QUpArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 38';
    }   
    class QDownArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 40';
    }   
}   

我在尝试为客户端安装XSilva的Lightspeed Webstore时遇到了同样的问题。经过一些挖掘和测试,我想我已经解决了这个问题。(仅供参考,简单地将'require'更改为'require_once'——虽然这是一个好主意——对我来说并不奏效。)我知道这是一个难看的黑客行为,但我用类_exists()检查包装了有问题的代码块,如下所示:

// Key-Specific Events (EnterKey, EscapeKey, UpArrowKey, DownArrowKey, etc.)
if (QApplication::IsBrowser(QBrowserType::Macintosh)) {
    if(!class_exists('QEnterKeyEvent') and !class_exists('QEscapeKeyEvent') and !class_exists('QUpArrowKeyEvent') and !class_exists('QDownArrowKeyEvent')) {
        class QEnterKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 13';
        }   
        class QEscapeKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 27';
        }   
        class QUpArrowKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 38';
        }   
        class QDownArrowKeyEvent extends QKeyPressEvent {
            protected $strCondition = 'event.keyCode == 40';
        }   
    }   
} else {
    class QEnterKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 13';
    }   
    class QEscapeKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 27';
    }   
    class QUpArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 38';
    }   
    class QDownArrowKeyEvent extends QKeyDownEvent {
        protected $strCondition = 'event.keyCode == 40';
    }   
}   

QCodo的一个社区分支称为QCubed,他们现在似乎已经修复了QA。
QCodo的一个社区分支称为QCubed,他们现在似乎在QA中有一个补丁。

Edit please,S&G Police here…Edit please,S&G Police here…Chris,谢谢…这两段代码定义同一类的原因是,其中一段位于浏览器为Macintosh的实例中。这个错误似乎发生在代码的第一个实例上……非常奇怪……也许我会设置条件来检查它是否存在……Chris,谢谢……两个代码块定义同一个类的原因是其中一个位于浏览器为Macintosh的实例中。这个错误似乎发生在代码的第一个实例上…非常奇怪…也许我会把条件放进去检查它是否存在…啊,我想你可能已经解决了