Re: Beginner Tutorials for using CLASSES in PHP4
| From: | Nathan Nobbe | Date: | Tue, 09 Oct 2007 14:50:12 +0000 |
| Subject: | Re: Beginner Tutorials for using CLASSES in PHP4 | ||
| References: | 1 2 3 4 5 6 7 8 9 10 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-262970@lists.php.net to get a copy of this message | ||
On 10/9/07, Tony Marston <tony@marston-home.demon.co.uk> wrote:
>
> You are confusing member variables with local variables. Member variables
> are part of the object's data which need to be made available to the
> outside
> world. Local variables are internal to the function, and do not need to be
> made available to the outside world. Local variables are part of the
> implementation, member varables are not.
no im not confusing anything;
local variables are within the scope of the function; therefore they are
part of the function
implementation.
instance variables are part of the scope of a class instance, therefore they
are part of its
implementation.
"Implementation" means the act of changing data, therefore it means the code
> and not the data itself.
code is nothing w/o data to manipulate; what is an algorithm w/o data to
manipulate; it
simply would not exist.
<snip>
>
> > it is also about client code not being able to view and manipulate the
> > implementation.
> > if client code can access data that the implementation (as you define it
> > [not consisting of data])
> > uses, or relys upon, then the outcome of the implementation can be
> altered
> > by client code.
>
> Then surely if a programmer fucks things up in such a fashion it would
> become apparent during unit testing? Then the culprit can be soundly
> whipped
> until he lears NOT to fuck up.
or better yet; protect the implementation so he wouldnt have to be whipped
in the
first place.
> that is a violation of encapsulation,
>
> I disagree.Encapsulation is the act of placing the data, and the
> operations
> which act upon that data, in the same object. A violation of encapsulation
> is therefore to put the data and its operations in more than one object.
> Encapsulation has absolutely nothing to do with how those objects are used
> (or abused).
>
> > which is precisely why data is part of the implementation,
> > and it needs to be concealed from client code to maintain the integrity
> of
> > the implementation.
> >
> > The fundamental concepts of OOP consist of nothing more than
> > encapsulation,
> >> inheritance and polymorphism. Data hiding, interfaces and all that
> other
> >> fancy stuff are irrelevant.
> >
> > youre missing out on like the last decade or so of oop.
>
> I am sticking to the fundamentals and deliberately ignoring all the crap
> which has been added on by everybody and his dog.
hmm; the rest of the oop community seems to be flocking to the crap.
>>>im not going to take the
> >>> time to try and explain the power of the interface construct. imho,
> you
> >>> have a long way to
> >>> go before you can grasp the power of the mechanism.
> >>
> >> I have never seen any gain from using interfaces in PHP, only pain,
> >> therefore I refuse to use them. Yet what functinality I am losing? None
> >> whatsoever.
> >
> > not every system will benefit from interfaces.
> > it sounds like you dont fully understand the use of them; and i wont say
> > its
> > immediately obvious.
>
> If it is not obvious in the way that interfaces can provide benefits then
> they are useless as far as I am concerned. I have never seen ANY
> documentation which shows ANY benefits from using interfaces, so I simply
> do
> not see the point in using them.
>
> > as i said they offer an additional polymorphic mechanism
> > one that php4 doesnt supply.
>
> I can achieve all the polymorphism I need WITHOUT using interfaces, so I
> do
> not see the point in using them.
like i said not every system will benefit.
> if you want a great example of how they are used and when extension is not
> > desirable (because the behavior is passed along) read the first chapter
> of
> > heads first design patterns.
>
> I refuse to read any more books on design patterns. In my opinion they are
> abused, over-used and over-rated. Just because one or two design patterns
> use interfaces does not mean that interfaces are the best thing since
> sliced
> bread.
it would be nice if you saw just one example why they are sometimes better
than
inheritance and therefore useful.
>>> in summary, i still maintain, based upon the contents of this post and
> >>> the
> >>> many previous posts
> >>> that sitting down and trying to learn oop with php4 is a waste of
> time.
> >>
> >> I strongly disagee. It *IS* possible to write perfectly adequate OO
> >> programs
> >> using PHP 4. If you cannot then you have been taught some bad habits.
> >
> >
> > actually, im trying to illustrate bad habits so they may be avoided by
> > other developers.
> >
> > That is just your opinion. My opinion is totally different.
> >
> >
> > thats why i gave an alternate critique based upon your definition of
> > encapsulation.
> >
> > also, i should mention its occurred to me that the abstract class
> > mechanism
> > in php5 is superior to your mechanism in php4.
> > if a method marked as abstract in php5 is not overridden by client code,
> > an
> > error is raised at
> > compile time, and the class is not allowed to be utilized.
>
> This still does not get away from the fact hat it is still possible to
> create an absract class in PHP 4 without having to use the keyword
> "abstract" in the class definition. The PHP 5 implementation may be
> superior, but it is still possible in PHP 4 (if you are a competent
> programmer, that is)
but you admit, the php5 construct is better and therefore strengthen my
initial
argument, which was, if php5 is better and php4 is deprecated; why bother
w/ php4.
> btw, interface hierarchies are like class hierarchies; one interface can
> > extend another.
>
> So what? One class can extend another. The "extends" keyword does not rely
> on interfaces.
if you read that one chapter i recommended you will see; acquiring the
behavior of the
parent is not always desirable.
-nathan