PHP: Hypertext Preprocessor (original) (raw)
interface_exists
(PHP 5 >= 5.0.2, PHP 7, PHP 8)
interface_exists — Checks if the interface has been defined
Description
Parameters
interface
The interface name
autoload
Whether to autoload if not already loaded.
Return Values
Returns [true](reserved.constants.php#constant.true)
if the interface given by interface
has been defined, [false](reserved.constants.php#constant.false)
otherwise.
Examples
Example #1 interface_exists() example
<?php // Check the interface exists before trying to use it if (interface_exists('MyInterface')) { class MyClass implements MyInterface { // Methods } }?>
See Also
- get_declared_interfaces() - Returns an array of all declared interfaces
- class_implements() - Return the interfaces which are implemented by the given class or interface
- class_exists() - Checks if the class has been defined
- enum_exists() - Checks if the enum has been defined
Found A Problem?
9 years ago
`Class and Interface share SAME namespace!
class k{}
interface k {} // Fatal error: Cannot redeclare class k
`
nils dot rocine at gmail dot com ¶
13 years ago
`A little note on namespaces that may be obvious to some, but was not obvious to me.
Although you can make the below statement when the statement is in the same namespace as the interface/class declaration MyInterface...
Making use of the interface_exists, or class_exists functions, you must enter the full namespaced interface name like so (even if the function call is from the same namespace.)
`
20 years ago
As far as I remember interface_exists() was added in 5.0.2 . In 5.0.0 and 5.0.1 class_exists() used to return TRUE when asked for a existing interface. Starting 5.0.2 class_exists() doesn't do that anymore.
12 years ago
`` If you want to check for included interface and you already register spl autoloader - it will crash. Becassue autoloader trying to load string
and he doesnt matter is it class or not.
Iv found several ways :
1 - unregister AL - -> check for Ifaces - -> register Autoloader
2 - $ifaces = array_flip(get_declared_interfaces());
if($ifaces["MyIface"]) // empty // isset .
Interfaces are not bad, you can build correct geomentry of system , with validation by funcs / vars / const .
Also they are good to storage variables . Much faster then Define, but you cant put algorithms inside, only complite strings / file / etc.
``