Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int count
http://www.php.net/manual/en/countable.count.php ( void )
}
While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}
Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int count http://www.php.net/manual/en/countable.count.php
( void )
}While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
By the nature of the method being in an interface, it is automatically
abstract - there is no code behind the method in an interface. So you
must supply the code in any class that implements the interface.
Unless the sub-class is declared as an abstract class ...
<?php
abstract class counter implements countable {
}
class counting extends counter {
public function count()
{
return 1;
}
}
$a = new counting();
echo $a->count();
?>
--
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling
Normally, PHP won't allow access types for interface methods, but the
reflection for SPL is defined inside the C code:
static const zend_function_entry spl_funcs_OuterIterator[] = {
SPL_ABSTRACT_ME(OuterIterator, getInnerIterator,
arginfo_recursive_it_void)
{NULL, NULL, NULL}
};
IMO the SPL_ME should be used instead, but I wouldn't be bothered about it ;-)
On Tue, May 18, 2010 at 11:12 PM, mathieu.suen
mathieu.suen@easyflirt.com wrote:
Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int count http://www.php.net/manual/en/countable.count.php
( void )
}While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
--
Tjerk
Ok so there is no real meaning behind the "abstract".
Thanks
Normally, PHP won't allow access types for interface methods, but the
reflection for SPL is defined inside the C code:static const zend_function_entry spl_funcs_OuterIterator[] = {
SPL_ABSTRACT_ME(OuterIterator, getInnerIterator,
arginfo_recursive_it_void)
{NULL, NULL, NULL}
};IMO the SPL_ME should be used instead, but I wouldn't be bothered about it ;-)
On Tue, May 18, 2010 at 11:12 PM, mathieu.suen
mathieu.suen@easyflirt.com wrote:Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int counthttp://www.php.net/manual/en/countable.count.php
( void )
}While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
-- Mathieu Suen
Ok so there is no real meaning behind the "abstract".
ThanksNormally, PHP won't allow access types for interface methods, but the
reflection for SPL is defined inside the C code:static const zend_function_entry spl_funcs_OuterIterator[] = {
SPL_ABSTRACT_ME(OuterIterator, getInnerIterator,
arginfo_recursive_it_void)
{NULL, NULL, NULL}
};IMO the SPL_ME should be used instead, but I wouldn't be bothered about it
;-)On Tue, May 18, 2010 at 11:12 PM, mathieu.suen
mathieu.suen@easyflirt.com wrote:Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int
counthttp://www.php.net/manual/en/countable.count.php
( void )
}While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
-- Mathieu Suen
Seemingly not when it applies to an interface.
--
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling
Ok so there is no real meaning behind the "abstract".
ThanksNormally, PHP won't allow access types for interface methods, but the
reflection for SPL is defined inside the C code:static const zend_function_entry spl_funcs_OuterIterator[] = {
SPL_ABSTRACT_ME(OuterIterator, getInnerIterator,
arginfo_recursive_it_void)
{NULL, NULL, NULL}
};IMO the SPL_ME should be used instead, but I wouldn't be bothered about it
;-)
For what it's worth, the non-SPL interfaces use ZEND_ABSTRACT_ME or
similar as far as I can tell. Also, reflection says that all of the
interface methods are abstract (which they are, in the sense of not
having any method body).
On Tue, May 18, 2010 at 11:12 PM, mathieu.suen
mathieu.suen@easyflirt.com wrote:Hi,
In the SPL there is some interface that have abstract method:
Countable {
/* Methods */
abstract public int
counthttp://www.php.net/manual/en/countable.count.php
( void )
}While some interface have "none abstract" method.
OuterIterator extends Iterator
http://www.php.net/manual/en/class.iterator.php {
/* Methods */
public Iterator getInnerIterator
http://www.php.net/manual/en/outeriterator.getchildren.php ( void )
..snip..
}Does "abstract" keyword have a semantic?
Thanks
--Mathieu suen
-- Mathieu Suen
Seemingly not when it applies to an interface.
I think the key issue is that in the docs some interface methods are
marked up as abstract, yet others aren't. I suggest making them
consistent, having them all being one or t'other.
--
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling
I think the key issue is that in the docs some interface methods are
marked up as abstract, yet others aren't. I suggest making them
consistent, having them all being one or t'other.
I would show abstract.
--
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling