[BNM] Dumb PHP question
Adam Wright
adamw at archgrove.co.uk
Sun Jun 3 20:25:39 BST 2007
Public fields are always a bit of a sticky issue, especially in
languages like C & Java where field access vs "etter" function call
semantics are baked in at compile time. If you commit to a public field,
your API is stuck with a public field for evermore, so if you ever need
to add additional validation/logging, your options are limited.
Ironically for this discussion, PHP from 5 onwards doesn't suffer so
badly from this (though the solution is messy). Any attempt at field
access to a nonexistant field attempts to call a class function "__get"
or "__set" appropriately, with the name of the field that failed to
resolve. So if you have, say,
class Foo
{
public $Bar;
}
And later decide that Bar should have been a method, you can write
class Foo
{
public function __get($field)
{
if ($field == "Bar")
{
// ...
}
}
public function __set($field, $value)
{
// ...
Other (generally late bound) languages have similar constructs.
Personally, when writing APIs for publication, I err on the side of
"etters" (unless the field is const/immutable); the flexibility offered
to pickup on design mistakes is valuable. APIs for internal/personal use
can be a little laxer (especially with modern refactoring tools).
adamw
paul perrin wrote:
> A bit of a shame you have to provide your own hook to be able to add such
> things. A waste of the programmers time, and additional lines of code to
> host bugs.
>
> Paul /)/+)
>
> On 03/06/07, Tom Hume <Tom.Hume at futureplatforms.com> wrote:
>> Nope; they let you add things like value and type checking later on
>> without having to do massive search-and-replaces on your code.
>>
>> On 3 Jun 2007, at 00:32, paul perrin wrote:
>>
>>> Isn't the automatic use of getter and setter methods the last
>>> refuge for those that don't really know when to use public properties?
>>>
>>> Paul /)/+)l
>>>
>>>
>>> On 02/06/07, Richard Maynard / Wessex Networks
>>> <rjm at wessexnetworks.com>
>>> wrote:
>>>> Shouldn't class variables be modified with getter and setter methods
>>>> rather
>>>> than modifying them as if public?
>>>>
>>>> I believe that is what is called bad practice in Java, but PHP
>>>> seems to be
>>>> more of a free-for-all when it comes to best practices.
>>>>
>>>> Richard.
>>>>
>>>> Wessex Networks
>>>> Linchmere Place
>>>> Ifield
>>>> Crawley
>>>> West Sussex
>>>> RH11 0EX
>>>> www.wessexnetworks.com rjm at wessexnetworks.com
>>>> T: 01293 542080 F: 01293 553849
>>>>
>>>> -----Original Message-----
>>>> From: bnmlist-bounces at brightonnewmedia.org
>>>> [mailto:bnmlist-bounces at brightonnewmedia.org] On Behalf Of Justin
>>>> Wanstall
>>>> Sent: 02 June 2007 12:11
>>>> To: 'Brighton New Media'
>>>> Subject: Re: [BNM] Dumb PHP question
>>>>
>>>> The $claim part refers to an instance of a class which has been
>>>> initiated
>>>> and the ->value is simply a value within that instance. It's Object
>>>> Oriented
>>>> programming.
>>>>
>>>> http://en.wikipedia.org/wiki/Object-oriented_programming
>>>>
>>>> Justin.
>>>>
>>>> -----Original Message-----
>>>> From: Alan Newman [mailto:alan at sensibledevelopment.com]
>>>> Sent: 02 June 2007 11:52
>>>> To: 'Brighton New Media'
>>>> Subject: [BNM] Dumb PHP question
>>>>
>>>> Hi,
>>>>
>>>>
>>>>
>>>> We have inherited a PHP UI for a back end application we are
>>>> customizing
>>>> and
>>>> I can't find an answer to this on the web, but I suspect I am just
>>>> not
>>>> looking in the right places.
>>>>
>>>>
>>>>
>>>> We are seeing this sort of expression a lot and are not sure what
>>>> it is:
>>>>
>>>>
>>>>
>>>> $claim->value
>>>>
>>>>
>>>>
>>>> It seems to come up a lot - is it some sort of "injection" of one
>>>> value in
>>>> to another? It would really help to know what is going in and
>>>> would help
>>>> out
>>>> us silly Java types a lot!
>>>>
>>>>
>>>>
>>>> Cheers
>>>>
>>>>
>>>>
>>>> - Alan
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> HYPERLINK "http://
>>>> www.sensibledevelopment.com"www.sensibledevelopment.com-
>>>> scalable back end web development that looks good.
>>>>
>>>>
>>>>
>>>> ::email:: HYPERLINK
>>>> "mailto:alan at sensibledevelopment.com"alan at sensibledevelopment.com
>>>>
>>>> ::land:: +44 (0)1273 621110
>>>>
>>>> ::mobile:: +44 (0)7711 006551
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> No virus found in this outgoing message.
>>>> Checked by AVG Free Edition.
>>>> Version: 7.5.472 / Virus Database: 269.8.6/828 - Release Date:
>>>> 01/06/2007
>>>> 11:22
>>>>
>>>> --
>>>>
>>>>
>>>> BNM Social - http://upcoming.yahoo.com/event/190648
>>>>
>>>> BNM Subscribe/Unsubscribe:
>>>> http://lists.wessexnetworks.com/cgi-bin/mailman/options/bnmlist/
>>>> BNM info/archives:
>>>> http://www.brightonnewmedia.org/
>>>>
>>>> BNM archive search:
>>>> http://www.roddis.org/bnm/search.php
>>>>
>>>> BNM powered by Wessex Networks:
>>>> http://www.wessexnetworks.com
>>>>
>>>> --
>>>>
>>>>
>>>> BNM Social - http://upcoming.yahoo.com/event/190648
>>>>
>>>> BNM Subscribe/Unsubscribe:
>>>> http://lists.wessexnetworks.com/cgi-bin/mailman/options/bnmlist/
>>>> BNM info/archives:
>>>> http://www.brightonnewmedia.org/
>>>>
>>>> BNM archive search:
>>>> http://www.roddis.org/bnm/search.php
>>>>
>>>> BNM powered by Wessex Networks:
>>>> http://www.wessexnetworks.com
>>>>
>>>> --
>>>>
>>>>
>>>> BNM Social - http://upcoming.yahoo.com/event/190648
>>>>
>>>> BNM Subscribe/Unsubscribe:
>>>> http://lists.wessexnetworks.com/cgi-bin/mailman/options/bnmlist/
>>>> BNM info/archives:
>>>> http://www.brightonnewmedia.org/
>>>>
>>>> BNM archive search:
>>>> http://www.roddis.org/bnm/search.php
>>>>
>>>> BNM powered by Wessex Networks:
>>>> http://www.wessexnetworks.com
>>>>
>>> --
>>>
>>>
>>> BNM Social - http://upcoming.yahoo.com/event/190648
>>>
>>> BNM Subscribe/Unsubscribe: http://lists.wessexnetworks.com/cgi-bin/
>>> mailman/options/bnmlist/
>>> BNM info/archives:
>>> http://www.brightonnewmedia.org/
>>>
>>> BNM archive search:
>>> http://www.roddis.org/bnm/search.php
>>>
>>> BNM powered by Wessex Networks:
>>> http://www.wessexnetworks.com
>>>
>> --
>> Future Platforms Ltd
>> e: Tom.Hume at futureplatforms.com
>> t: +44 (0) 1273 819038
>> m: +44 (0) 7971 781422
>> company: www.futureplatforms.com
>> personal: tomhume.org
>>
>>
>> --
>>
>>
>> BNM Social - http://upcoming.yahoo.com/event/190648
>>
>> BNM Subscribe/Unsubscribe:
>> http://lists.wessexnetworks.com/cgi-bin/mailman/options/bnmlist/
>> BNM info/archives:
>> http://www.brightonnewmedia.org/
>>
>> BNM archive search:
>> http://www.roddis.org/bnm/search.php
>>
>> BNM powered by Wessex Networks:
>> http://www.wessexnetworks.com
>>
More information about the BNMlist
mailing list. Powered by Wessex Networks