|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #62411 Allow calling of overloaded define()-method
Submitted: 2012-06-25 19:27 UTC Modified: 2012-07-18 09:14 UTC
From: Assigned: pdezwart (profile)
Status: Closed Package: amqp (PECL)
PHP Version: 5.3.14 OS:
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
Solve the problem:
15 - 10 = ?
Subscribe to this entry?

 [2012-06-25 19:27 UTC]
The attached patch allows extending AMQPExchange and AMQPQueue for testing 
purposes. Unit testing frameworks like PHPUnit allow mocking of objects often by 
generating a child class to the mocked class and overloading each method. As 
overloading declare() in userland is not possible (due to "T_DECLARE" being a 
lexer token by itself) it is necessary for those frameworks to allow calling the 
declare()-method without segfaults. The attached patch will make declare() fail 
non-fatal and return null if the AMQPExchange/AMQPQueue object has not properly 
been initialized. Without this patch unit testing PECL amqp dependent classes is 
nearly impossible.

Test script:
class FakeExchange extends AMQPExchange
   public function __construct()

$exchange = new FakeExchange();



amqp-declare-initialization (last revision 2012-06-25 19:28 UTC by lars at strojny dot net)

Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2012-07-18 09:14 UTC]
-Status: Open +Status: Closed -Assigned To: +Assigned To: pdezwart
 [2012-07-18 09:14 UTC]
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at

Fixed in 1.0.4. Thanks for the help!
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Thu Sep 16 23:03:39 2021 UTC