PHP multiple classes implementing same interface
如果我有一个PHP接口,比如
1 2 | interface AuthenticationInterface { } |
以及两个实现接口的类,例如
1 2 3 4 5 | class ApiKey implements AuthenticationInterface { } class AuthToken implements AuthenticationInterface { } |
当实例化中的新authenticationInterface时,如何确定使用这些类中的哪些类?
接口用于为继承它的类定义结构(体系结构)。
An interface is a contract specifying a set of methods, fields and properties which will be available on any implementing object
我想你对这类工厂设计模式感兴趣。在这里阅读更多关于它的信息:PHP设计模式
如果你的对象是在上游某个地方为你实例化的,你只知道它实现了你的authenticationInterface接口(所以你知道它可以是少数类中的一个…在你的例子中是2),你可以通过使用instanceof来判断你的对象是哪个类。
1 2 3 4 | if ($your_object instanceof ApiKey) { echo 'object class is ApiKey'; } |
无法实例化接口。您可以创建类的对象。