Well, when you are declaring interfaces you should also specify parameters data type (in case its instance of another class, in case it is just a string or integer it doesnt matter)

PHP ignore it however interfaces are here generally for making extensions, modules and plugins into applications. This makes much easier understand application design.

PHP Code: 
interface IDatabaseAdapter
{
  public function 
query(IDatabaseQuery $query);

Now we know that method query expects instance of class based on interfaces IDatabaseQuery. This is meant for DB layer which has one main class and uses adapters (drivers) for different databases (mysql, mssql, pgsql, mysqli, etc..)


Btw, you can also inherit interfaces
PHP Code: 
interface IAdapter
{
  public function 
register();
}

interface 
IDatabaseAdapter extends IAdapter
{
  public function 
query(IDatabaseQuery $query);

Now when you create class which implements interface IDatabaseAdapter you have declare both methods (register and query) or you get Fatal Error i think, or parse error, iam not sure atm.