Re: [PHP] function and interface in parameter list?

2005-02-01 Thread Jochem Maas
Marco Schuler wrote:
Am Dienstag, 1. Februar 2005 16:07 schrieb Marco Schuler:
Am Dienstag, 1. Februar 2005 15:50 schrieb Jochem Maas:
Marco Schuler wrote:
Hi
I found a function declaration in an open source project (in
php5) and I could not find documantation for this. The function
declaration is:
public function registerComp(IComp $comp)
Is it a kind of typecast?
no its a type declaration (is that the correct term). it states
that $comp must be an object of class IComp (or a subclass of
it). if $comp is not anj IComp object you get a fatal error.

Found it out: It is called "Type Hinting".
ah yes! although ClassType Hinting would be more truthful
http://ch2.php.net/manual/en/language.oop5.typehinting.php
There is a user contributed note on that page:
"Type hinting allows not to specify a required interface to be 
supported for the object being passed. Beware, the interpreter will 
not give an error for that."

Is it a bug in php or what is the reason?
I don't even understand what the guy was trying to say in the user
comments - let alone if its a bug or a feature!
with regard to type hinting with Interfaces - I have no idea offhand,
but by using my hands I found out in about 30 seconds... I wrote the bit of
code below, if you run it you will find out for yourself whether is works ;-)
php -r '
interface MyInt { function doIt(); }
class MyObj implements MyInt { function doIt() { echo "boo"; } }
function goGo(MyInt $x) { $x->doIt(); }
goGo(new MyObj);
'
--
Cheers!
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


Re: [PHP] function and interface in parameter list?

2005-02-01 Thread Marco Schuler
Am Dienstag, 1. Februar 2005 16:07 schrieb Marco Schuler:
> Am Dienstag, 1. Februar 2005 15:50 schrieb Jochem Maas:
> > Marco Schuler wrote:
> > > Hi
> > >
> > > I found a function declaration in an open source project (in
> > > php5) and I could not find documantation for this. The function
> > > declaration is:
> > >
> > > public function registerComp(IComp $comp)
> > >
> > > Is it a kind of typecast?
> >
> > no its a type declaration (is that the correct term). it states
> > that $comp must be an object of class IComp (or a subclass of
> > it). if $comp is not anj IComp object you get a fatal error.

Found it out: It is called "Type Hinting".

http://ch2.php.net/manual/en/language.oop5.typehinting.php

There is a user contributed note on that page:
"Type hinting allows not to specify a required interface to be 
supported for the object being passed. Beware, the interpreter will 
not give an error for that."

Is it a bug in php or what is the reason?

--
Cheers!

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] function and interface in parameter list?

2005-02-01 Thread Marco Schuler
Hi

Am Dienstag, 1. Februar 2005 15:50 schrieb Jochem Maas:
> Marco Schuler wrote:
> > Hi
> >
> > I found a function declaration in an open source project (in
> > php5) and I could not find documantation for this. The function
> > declaration is:
> >
> > public function registerComp(IComp $comp)
> >
> > Is it a kind of typecast?
>
> no its a type declaration (is that the correct term). it states
> that $comp must be an object of class IComp (or a subclass of it).
> if $comp is not anj IComp object you get a fatal error.

Where can I find this in the manual? IComp can also be an interface, 
right?

> this only works for classes. and it does not work in conjunction
> with optional params e.g:
>
> public function registerComp(IComp $comp = null) { /**/ }

With optional params you mean actually the variable initialisation 
within the declaration, right?

--
Cheers!
 Marco

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] function and interface in parameter list?

2005-02-01 Thread Jochem Maas
Marco Schuler wrote:
Hi
I found a function declaration in an open source project (in php5) and 
I could not find documantation for this. The function declaration is:

public function registerComp(IComp $comp)
Is it a kind of typecast?
no its a type declaration (is that the correct term). it states
that $comp must be an object of class IComp (or a subclass of it).
if $comp is not anj IComp object you get a fatal error.
this only works for classes. and it does not work in conjunction
with optional params e.g:
public function registerComp(IComp $comp = null) { /**/ }

(which IMHO sucks but hey c'est la vie! :-) )

 
--
Cheers!
 Marco

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[PHP] function and interface in parameter list?

2005-02-01 Thread Marco Schuler
Hi

I found a function declaration in an open source project (in php5) and 
I could not find documantation for this. The function declaration is:

public function registerComp(IComp $comp)

Is it a kind of typecast?
 
--
Cheers!
 Marco

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php