|
Posted by Jerry Stuckle on 08/17/06 12:10
nephish wrote:
> Hey there all.
>
> i have been looking to simplify my huge website that i wrote while
> learning php.
> now its a spaghetti mess. So, i wanted to simplify it.
> Now, i see the functionality that defining functions can give me. But
> what is the magic behind classes?
> i mean, the documentation i find. Most use the class Person as the
> example. So how would having a person class help me. It seems that i am
> writing more code than less because i am passing values thru a class
> instead of directly updating a database.
>
> for example: if i have a class Customer
>
> $john = new Customer;
>
> $john->name = 'john';
>
> then the class updates the database with a new customer named john.
>
> why not just send sql an insert to do this ?
>
> just not getting it, but i know the advantages are there, could someone
> help me.
>
> thanks much
> shawn
>
Hi, Shawn,
Yes, you do end up writing more code the first time. However, one of
the advantages is you only do it once. You can then use that class
multiple times and not have to rewrite that code each time.
It also allows you to forget about the internals of the object and
concentrate more on the problem at hand.
For instance - if I want to display a list of customers in Washington,
DC, (from a database), I could do something like:
$db = new Database(); // config file stores user, pw, db, etc.
$clist = new CustomerList(db); // Create a new list object
$clist->fetch(array('city'=>'Washington', 'state'=>'DC'));
$list = $clist->getArray(); // Fetch the list as an array of Customer
foreach ($list as $customer) {
echo "<tr><td>" . $customer->getName() . "</td>\n";
echo "<td>" . $customer->getAddress() . "</td>\n";
... etc.
}
I don't' know how the database connects - in fact I don't even know
which database I'm using, nor do I care.
I don't have to worry about the SQL required to fetch a list of
customers. I just know my function takes an array of key=>value pairs;
the key is attribute I'm looking for (documented in the class itself)
and the value is the actual value I want.
And I don't even know what the internal representation of the Customer
is (although it's probably pretty obvious just from the data). But the
important thing is I don't have to worry about it.
So, instead of having to worry about how to access the database, fetch
my data, possibly reformat the data (is it stored as "name" or
"first_name/last_name"?) or any of the rest.
It also means I can change databases or even use a flat file just by
changing the classes involved. The rest of the program doesn't care.
Hope this helps some.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|