On Wed, 2008-04-30 at 01:22 -0400, Nathan Nobbe wrote:
> On Wed, Apr 30, 2008 at 1:07 AM, Robert Cummings <[EMAIL PROTECTED]> wrote:


>         We are not talking about data here. We are talking about
>         properties.
>         Data is assigned to a property which is akin to functionality
>         being
>         assigned to a method. A property has all the features of the
>         most simple
>         getter/setter method combination in one fell statement and
>         without the
>         envelope overhead. As such, there is no reason why it could
>         not be part
>         of the interface design.
> 
> so a  'property' could be any data type?  that sounds contradictory to
> the concept of an interface to me.  the only special connotation i
> have ever encountered for the term 'property' is my *very* brief work
> w/ vb.net as a teacher.  there is a mechanism whereby getters and
> setters can be declared and a member variable can be named..  then
> when using instances of the class, client code uses the name of the
> 'property' which has the same syntax as accessing a public data
> member, however, the client is transparently being driven through the
> methods of the 'property'.  between SPL ArrayAccess, and magic
> methods, php already has multiple ways to realize 'properties'.

Seriously, are you having this much difficulty understanding that a
property is not itself data until such time as it is given a value? If I
say something has colour I haven't said what colour, only that it has
colour. Red, blue, green, these are data. "colour" is a property. If I
had an interface where I defined the following:

<?php

Interface Fibre
{
   public $colour;
}

?>

I'm saying that all classes that implement Fibre must have a $colour
property. i didn't say what colour.

<?php

Class Hair implements Fibre
{
    public $colour = null;
}

$hair = new Hair();
$hair->colour = 'brown';

?>

The above is a much less wordy way of doing the following:

<?php

Interface Fibre
{
    public function setColour( $colour );

    public function getColour();
}

Class Hair implements Fibre
{
    public $colour = null;

    public function setColour( $colour )
    {
        $this->colour = $colour;
    }

    public function getColour()
    {
        return $this->colour;
    }
}

$hair = new Hair();
$hair->setColour( 'brown' );

?>

Now do you see the equivalence? I don't think I can simplify it anymore.
Since they are equivalent your argument is void since it hinges on data.
To throw your void argument back at you about a "property can be any
type" so too can a parameter:

$hair->setColour( 3.14 );

This is a feature of a dynamic language, not a flaw in my argument. And
to beat the dead horse... a parameter declaration isn't data either.

Cheers,
Rob.
-- 
http://www.interjinn.com
Application and Templating Framework for PHP


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to