forked from php-amqplib/RabbitMqBundle
-
Notifications
You must be signed in to change notification settings - Fork 48
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update AmqpMember.php #43
Open
ViPErCZ
wants to merge
1
commit into
Kdyby:master
Choose a base branch
from
ViPErCZ:patch-4
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That would break the contact of the interface. Why is this needed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need use SSLConnection (https://github.com/php-amqplib/php-amqplib/blob/master/PhpAmqpLib/Connection/AMQPSSLConnection.php) instead of Connection.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, I can understand that, but this is not a good way to solve it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why? What is the correct way? Please.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AmqpMember
and subclasses of it are using some methods of the given$conn
instance. With this change, you create dependency on interface, that doesn't require those methods -> it's breaking the contract of the interface. When in fact, you depend on broader interface.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand. But then I can not think of a way to use class SSLConnection? Instead interface use abstract class AbstractConnection?
PS: sorry za angličtinu... můj skill není moc cool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je potřeba se podívat, jaky metody to používá :) Pokud
AmqpMember
ani zadni jeho potomci nepotřebují nic zIConnection
, může se tam v pohodě hoditAbstractConnection
.Na druhou stranu, bude ale potřeba podědit
SSLConnection
a přidat tam věci zKdyby\RabbitMq\Connection
, jinak přestane fungovat zbytek knihovny. Možná bych z toho dokonce udělal traitu.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Momentálně to co využívám mi spolkne i typehint s tím interface. Ale chápu problém.
Teď přemýšlím jak jsi to přesně myslel.
Ideálně, aby v neonu pokud použiju třeba ssl:true se použilo Connection s funkčností z SSLConnection. Jestli si pamatuji, tak tvůj kód očekává v typehintech instance tvé Connection.
Knihovně by tak mělo být jedno jakou používá instanci. Jestli AMQPLazyConnection nebo AMQPSSLConnection. Nejbližší rodič obou dvou je AMQPStreamConnection a pak AbstractConnection.
Musel bych to asi promyslet, která cesta bude lepší... pokud to nepředěláš samozřejmě ty.
Traitu jak jsem psal úplně nevím jak do toho zakomponovat.
Jestli ji vložit do Connection a na základě parametrů, které dostane od DI volat vytváření contextu. Protože jediné co je tam navíc koukám je metoda create_ssl_context.