Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
Fixed an error in EventDispatcher::disconnect, Added support for "global" event listeners with $name = null#20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
bzikarsky commentedOct 13, 2010
Maybe I was too unclear about "global" in this case, What I refer to is a listener which fires on all events on a dispatcher. I was quite sure, I read in somewhere in the doc code, but can't find it right now. Anyway what I would use it for:
But there are downsides if there are lots of event-listeners and you don't know whether they have been added yet. So you got to check the existence each time. It'd be much easier when just can throw in an event listener, listening to all events. Maybe I can write an even fine-grained control by interpreting "" as wildcard in a name. Then "" would be global, but you could also add listeners to specific categories of events, like "client.*". |
…dOutput + Table + Emails (javiereguiluz)This PR was squashed before being merged into the master branch (closessymfony#20).Discussion----------Added a new app:list-users command to show BufferedOutput + Table + EmailsCommits-------69cce9c Added a new app:list-users command to show BufferedOutput + Table + Emails
AddedCVE-2014-2383 security advisory
This PR was merged into the 5.2-dev branch.Discussion----------[VarDumper] Support for ReflectionAttribute| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| Deprecations? | no| Tickets | N/A| License | MIT| Doc PR | not neededVarDumper currently does not understand that certain reflection objects might have attributes attached to it. Dumping a `ReflectionAttribute` just yields `ReflectionAttribute {#4711}` which is not really helpful. This PR attempts to fix this.```ReflectionAttribute {#4711 name: "App\MyAttribute" arguments: array:2 [ 0 => "one" "extra" => "hello" ]}```While working on this, I noticed that class constants (which can be reflected on since PHP 7.1) are just dumped as plain values, so I've also added a caster for `ReflectionClasConstant` as bonus.The full output for the `LotsOfAttributes` fixture class that is included with is PR looks like this:<details>```^ ReflectionClass {#7 +name: "Symfony\Component\VarDumper\Tests\Fixtures\LotsOfAttributes" modifiers: "final" implements: [] constants: array:1 [ 0 => ReflectionClassConstant {#20 +name: "SOME_CONSTANT" +class: "Symfony\Component\VarDumper\Tests\Fixtures\LotsOfAttributes" modifiers: "public" value: "some value" attributes: array:2 [ 0 => ReflectionAttribute {#33 name: "Symfony\Component\VarDumper\Tests\Fixtures\RepeatableAttribute" arguments: array:1 [ 0 => "one" ] } 1 => ReflectionAttribute {#34 name: "Symfony\Component\VarDumper\Tests\Fixtures\RepeatableAttribute" arguments: array:1 [ 0 => "two" ] } ] } ] properties: array:1 [ "someProperty" => ReflectionProperty {#19 +name: "someProperty" +class: "Symfony\Component\VarDumper\Tests\Fixtures\LotsOfAttributes" modifiers: "private" attributes: array:1 [ 0 => ReflectionAttribute {#30 name: "Symfony\Component\VarDumper\Tests\Fixtures\MyAttribute" arguments: array:2 [ 0 => "one" "extra" => "hello" ] } ] } ] methods: array:1 [ "someMethod" => ReflectionMethod {#21 +name: "someMethod" +class: "Symfony\Component\VarDumper\Tests\Fixtures\LotsOfAttributes" returnType: "void" parameters: { $someParameter: ReflectionParameter {#28 +name: "someParameter" position: 0 attributes: array:1 [ 0 => ReflectionAttribute {#42 name: "Symfony\Component\VarDumper\Tests\Fixtures\MyAttribute" arguments: array:1 [ 0 => "three" ] } ] typeHint: "string" } } attributes: array:1 [ 0 => ReflectionAttribute {#27 name: "Symfony\Component\VarDumper\Tests\Fixtures\MyAttribute" arguments: array:1 [ 0 => "two" ] } ] modifiers: "public" } ] attributes: array:1 [ 0 => ReflectionAttribute {#22 name: "Symfony\Component\VarDumper\Tests\Fixtures\MyAttribute" arguments: [] } ] extra: { file: "./src/Symfony/Component/VarDumper/Tests/Fixtures/LotsOfAttributes.php" line: "15 to 28" isUserDefined: true }}```</details>Commits-------34dbf01 [VarDumper] Support for ReflectionAttribute.Delete `$baseUri` on test teardown
# Das ist die erste Commit-Beschreibung:[Notifier] add support for gatewayapi-notifier# Die Commit-Beschreibungsymfony#2 wird ausgelassen:# Make GatewayAPITransportFactory final# Die Commit-Beschreibungsymfony#3 wird ausgelassen:# Fix typo in gatewaypi# Die Commit-Beschreibungsymfony#4 wird ausgelassen:# Fix typo# Die Commit-Beschreibungsymfony#5 wird ausgelassen:# Update README.md# Die Commit-Beschreibungsymfony#6 wird ausgelassen:# Rename GatewayAPI -> GatewayApi# Die Commit-Beschreibungsymfony#7 wird ausgelassen:# Add GatewayApiTransportFactory tests# Die Commit-Beschreibungsymfony#8 wird ausgelassen:# Add GatewayApiTransportTest testSend# Die Commit-Beschreibungsymfony#9 wird ausgelassen:# Add GatewayApiTransportTest testSupportsSmsMessage# Die Commit-Beschreibungsymfony#10 wird ausgelassen:# Add GatewayApiTransportTest testNotSupportsChatMessage# Die Commit-Beschreibungsymfony#11 wird ausgelassen:# Lint code# Die Commit-Beschreibungsymfony#12 wird ausgelassen:# Fix name and email in composer.json## Co-authored-by: Tobias Nyholm <tobias.nyholm@gmail.com># Die Commit-Beschreibungsymfony#13 wird ausgelassen:# Remove extra from composer.json# Die Commit-Beschreibungsymfony#14 wird ausgelassen:# Update version tag in GatewayApiTransport# Die Commit-Beschreibungsymfony#15 wird ausgelassen:# Add /.gitattributes export-ignore in .gitattributes# Die Commit-Beschreibungsymfony#16 wird ausgelassen:# Update UnsupportedSchemeException# Die Commit-Beschreibungsymfony#17 wird ausgelassen:# Add required space in phpdoc# Die Commit-Beschreibungsymfony#18 wird ausgelassen:# Update GatewayApiTransportFactory.php## Update version tag in GatewayApiTransportFactory# Die Commit-Beschreibungsymfony#19 wird ausgelassen:# [Notifier] add support for gatewayapi-notifier# Die Commit-Beschreibungsymfony#20 wird ausgelassen:# Make GatewayAPITransportFactory final# Die Commit-Beschreibungsymfony#21 wird ausgelassen:# Make GatewayAPITransportFactory final# Die Commit-Beschreibungsymfony#22 wird ausgelassen:# Fix typo in gatewaypi# Die Commit-Beschreibungsymfony#23 wird ausgelassen:# Fix typo# Die Commit-Beschreibungsymfony#24 wird ausgelassen:# Update README.md
…afimArts)This PR was squashed before being merged into the 6.2 branch.Discussion----------[VarDumper] Add `FFI\CData` and `FFI\CType` types| Q | A| ------------- | ---| Branch? | 6.2| Bug fix? | no| New feature? | yes| Deprecations? | no| Tickets | -| License | MIT| Doc PR | -Added support of FFI:```php$ffi = \FFI::cdef(<<<'CPP' typedef struct { int x; int y; } Point; typedef struct Example { uint8_t array[32]; long longVal; __extension__ union { __extension__ struct { short shortVal; }; struct { Point point; float e; }; }; bool boolValue; int (*func)(struct __sub *h); } Example;CPP);$struct = $ffi->new('Example');$struct->func = (static fn (object $ptr) => 42);dump($struct);```**Before**```FFI\CData {#2}```**After**```FFI\CData<struct Example> size 64 align 8 {#2 +array: FFI\CData<uint8_t[32]> size 32 align 1 {#18} +int32_t longVal: 0 +int16_t shortVal: 0 +point: FFI\CData<struct <anonymous>> size 8 align 4 {#17 +int32_t x: 0 +int32_t y: 0 } +float e: 0.0 +bool boolValue: false +func: [cdecl] callable(struct __sub*): int32_t {#20 returnType: FFI\CType<int32_t> size 4 align 4 {#25} }}```P.S. I apologize for the multiple force pushes, errors in tests and codestyle have been fixed.## Review And TODOs- Pointers - [x] Pointer to scalar tests. - [x] Pointer to struct tests. - [x] "Special" pointer to `char*` tests (with `\0` and without `\0`).- Possible Errors - [x] Do not dump union fields with pointer references (possible SIGSEGV).Commits-------1c7dc52 [VarDumper] Add `FFI\CData` and `FFI\CType` types…lishing a message. (jwage)This PR was squashed before being merged into the 6.4 branch.Discussion----------[Messenger] [Amqp] Handle AMQPConnectionException when publishing a message.| Q | A| ------------- | ---| Branch? | 6.4| Bug fix? | yes| New feature? | no| Deprecations? | no| Issues |Fix#36538Fix#48241| License | MITIf you have a message handler that dispatches messages to another queue, you can encounter `AMQPConnectionException` with the message "Library error: a SSL error occurred" or "a socket error occurred" depending on if you are using tls or not or if you are running behind a load balancer or not.You can manually reproduce this issue by dispatching a message where the handler then dispatches another message to a different queue, then go to rabbitmq admin and close the connection manually, then dispatch another message and when the message handler goes to dispatch the other message, you will get this exception:```a socket error occurred#0 /vagrant/vendor/symfony/amqp-messenger/Transport/AmqpTransport.php(60): Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpSender->send()#1 /vagrant/vendor/symfony/messenger/Middleware/SendMessageMiddleware.php(62): Symfony\Component\Messenger\Bridge\Amqp\Transport\AmqpTransport->send()#2 /vagrant/vendor/symfony/messenger/Middleware/FailedMessageProcessingMiddleware.php(34): Symfony\Component\Messenger\Middleware\SendMessageMiddleware->handle()#3 /vagrant/vendor/symfony/messenger/Middleware/DispatchAfterCurrentBusMiddleware.php(61): Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware->handle()#4 /vagrant/vendor/symfony/messenger/Middleware/RejectRedeliveredMessageMiddleware.php(41): Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware->handle()#5 /vagrant/vendor/symfony/messenger/Middleware/AddBusNameStampMiddleware.php(37): Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware->handle()#6 /vagrant/vendor/symfony/messenger/Middleware/TraceableMiddleware.php(40): Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware->handle()#7 /vagrant/vendor/symfony/messenger/MessageBus.php(70): Symfony\Component\Messenger\Middleware\TraceableMiddleware->handle()#8 /vagrant/vendor/symfony/messenger/TraceableMessageBus.php(38): Symfony\Component\Messenger\MessageBus->dispatch()#9 /vagrant/src/Messenger/MessageBus.php(37): Symfony\Component\Messenger\TraceableMessageBus->dispatch()#10 /vagrant/vendor/symfony/mailer/Mailer.php(66): App\Messenger\MessageBus->dispatch()#11 /vagrant/src/Mailer/Mailer.php(83): Symfony\Component\Mailer\Mailer->send()#12 /vagrant/src/Mailer/Mailer.php(96): App\Mailer\Mailer->send()#13 /vagrant/src/MessageHandler/Trading/StrategySubscriptionMessageHandler.php(118): App\Mailer\Mailer->sendEmail()#14 /vagrant/src/MessageHandler/Trading/StrategySubscriptionMessageHandler.php(72): App\MessageHandler\Trading\StrategySubscriptionMessageHandler->handle()#15 /vagrant/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(152): App\MessageHandler\Trading\StrategySubscriptionMessageHandler->__invoke()#16 /vagrant/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(91): Symfony\Component\Messenger\Middleware\HandleMessageMiddleware->callHandler()#17 /vagrant/vendor/symfony/messenger/Middleware/SendMessageMiddleware.php(71): Symfony\Component\Messenger\Middleware\HandleMessageMiddleware->handle()#18 /vagrant/vendor/symfony/messenger/Middleware/FailedMessageProcessingMiddleware.php(34): Symfony\Component\Messenger\Middleware\SendMessageMiddleware->handle()#19 /vagrant/vendor/symfony/messenger/Middleware/DispatchAfterCurrentBusMiddleware.php(68): Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware->handle()#20 /vagrant/vendor/symfony/messenger/Middleware/RejectRedeliveredMessageMiddleware.php(41): Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware->handle()#21 /vagrant/vendor/symfony/messenger/Middleware/AddBusNameStampMiddleware.php(37): Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware->handle()#22 /vagrant/vendor/symfony/messenger/Middleware/TraceableMiddleware.php(40): Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware->handle()#23 /vagrant/vendor/symfony/messenger/MessageBus.php(70): Symfony\Component\Messenger\Middleware\TraceableMiddleware->handle()#24 /vagrant/vendor/symfony/messenger/TraceableMessageBus.php(38): Symfony\Component\Messenger\MessageBus->dispatch()#25 /vagrant/vendor/symfony/messenger/RoutableMessageBus.php(54): Symfony\Component\Messenger\TraceableMessageBus->dispatch()#26 /vagrant/vendor/symfony/messenger/Worker.php(162): Symfony\Component\Messenger\RoutableMessageBus->dispatch()#27 /vagrant/vendor/symfony/messenger/Worker.php(109): Symfony\Component\Messenger\Worker->handleMessage()#28 /vagrant/vendor/symfony/messenger/Command/ConsumeMessagesCommand.php(238): Symfony\Component\Messenger\Worker->run()#29 /vagrant/vendor/symfony/console/Command/Command.php(326): Symfony\Component\Messenger\Command\ConsumeMessagesCommand->execute()#30 /vagrant/vendor/symfony/console/Application.php(1096): Symfony\Component\Console\Command\Command->run()#31 /vagrant/vendor/symfony/framework-bundle/Console/Application.php(126): Symfony\Component\Console\Application->doRunCommand()#32 /vagrant/vendor/symfony/console/Application.php(324): Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand()#33 /vagrant/vendor/symfony/framework-bundle/Console/Application.php(80): Symfony\Component\Console\Application->doRun()#34 /vagrant/vendor/symfony/console/Application.php(175): Symfony\Bundle\FrameworkBundle\Console\Application->doRun()#35 /vagrant/vendor/symfony/runtime/Runner/Symfony/ConsoleApplicationRunner.php(49): Symfony\Component\Console\Application->run()#36 /vagrant/vendor/autoload_runtime.php(29): Symfony\Component\Runtime\Runner\Symfony\ConsoleApplicationRunner->run()#37 /vagrant/bin/console(11): require_once('...')#38 {main}```TODO:- [x] Add test for retry logic when publishing messagesCommits-------f123370 [Messenger] [Amqp] Handle AMQPConnectionException when publishing a message.
The behaviour of disconnect() didn't match its description: If you pass NULL as the listener, no listener instead of all an event's listeners is disconnected.
I added the missing check for null and a test for it.
I added some first tests. Probably some more tests to verify notify/filter/notifyAll/... should be added as well to guarantee correct behavior if those methods stop using getListeners().