By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
428,558 Members | 1,607 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 428,558 IT Pros & Developers. It's quick & easy.

Object Oriented Approach to PHP programing and MySQL database

P: n/a
Hello everybody,

I am new to PHP and working on extending my knowledge of OOP. The
posts in this group concerned with whether or not to use an OO
approach when programming in PHP is not what I want to discuss in this
post. Rather I would like to discuss the best way to program the
following problem:

I have a MySQL Database which for example exists of phonenumbers. The
table might look something like this.

+---+---------------+------+
|ID | PHONENUMBER | FLAGS|
+---+---------------+------+
|001| 612341234| FALSE|
+---+---------------+------+
|002| 612341235| TRUE |
+---+---------------+------+
|...| ...| FALSE|
+---+---------------+------+
|00N| 612341238| FALSE|
+---+---------------+------+

An object representation in PHP might be the object PhoneNumber. The
object PhoneNumber would be extended from a general class called
Entity. The class Entity allows for easy creation of new database
objects. Say I would like an EmailAddress object, I would simply
create the MySQL table, extend the Entity class with an EmailAddress
class and populate the SQL variables with the correct SQL statements.

Until this far everything is ok. But what if I would like an extended
version of the objects PhoneNumber or Emailaddress? Say for example
that I would like an object called MobilePhoneNumber. The only
difference with the normal PhoneNumberClass is that it is of the type
MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
Objects for sending text messages). I would like to create a MySQL
table that consists of mobilephonenumerid's and phonenumberid's.

What would be the best way, rewriting the internals of the Entity
class and just fetch the data from MySQL right away or writing new
internals for the MobilePhoneNumbers class which create a
phoneNumberObject if it does not exist?

Hope that my problem and questions are clear, if not please ask for
more info.

Thanks in advance

Marijn

Jun 3 '07 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On 03.06.2007 21:33 Marijn wrote:
Hello everybody,

I am new to PHP and working on extending my knowledge of OOP. The
posts in this group concerned with whether or not to use an OO
approach when programming in PHP is not what I want to discuss in this
post. Rather I would like to discuss the best way to program the
following problem:

I have a MySQL Database which for example exists of phonenumbers. The
table might look something like this.

+---+---------------+------+
|ID | PHONENUMBER | FLAGS|
+---+---------------+------+
|001| 612341234| FALSE|
+---+---------------+------+
|002| 612341235| TRUE |
+---+---------------+------+
|...| ...| FALSE|
+---+---------------+------+
|00N| 612341238| FALSE|
+---+---------------+------+

An object representation in PHP might be the object PhoneNumber. The
object PhoneNumber would be extended from a general class called
Entity. The class Entity allows for easy creation of new database
objects. Say I would like an EmailAddress object, I would simply
create the MySQL table, extend the Entity class with an EmailAddress
class and populate the SQL variables with the correct SQL statements.

Until this far everything is ok. But what if I would like an extended
version of the objects PhoneNumber or Emailaddress? Say for example
that I would like an object called MobilePhoneNumber. The only
difference with the normal PhoneNumberClass is that it is of the type
MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
Objects for sending text messages). I would like to create a MySQL
table that consists of mobilephonenumerid's and phonenumberid's.

What would be the best way, rewriting the internals of the Entity
class and just fetch the data from MySQL right away or writing new
internals for the MobilePhoneNumbers class which create a
phoneNumberObject if it does not exist?

Hope that my problem and questions are clear, if not please ask for
more info.

Thanks in advance

Marijn
Hi Marijn

your problem is clear and well-known, particularly PoEAA book discusses
diverse approaches in detail (see e.g. "Single Table Inheritance" and
other ORM patterns).

--
gosha bine

extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
Jun 4 '07 #2

P: n/a
On Jun 4, 10:05 am, gosha bine <stereof...@gmail.comwrote:
On 03.06.2007 21:33 Marijn wrote:
Hello everybody,
I am new to PHP and working on extending my knowledge of OOP. The
posts in this group concerned with whether or not to use an OO
approach when programming in PHP is not what I want to discuss in this
post. Rather I would like to discuss the best way to program the
following problem:
I have a MySQL Database which for example exists of phonenumbers. The
table might look something like this.
+---+---------------+------+
|ID | PHONENUMBER | FLAGS|
+---+---------------+------+
|001| 612341234| FALSE|
+---+---------------+------+
|002| 612341235| TRUE |
+---+---------------+------+
|...| ...| FALSE|
+---+---------------+------+
|00N| 612341238| FALSE|
+---+---------------+------+
An object representation in PHP might be the object PhoneNumber. The
object PhoneNumber would be extended from a general class called
Entity. The class Entity allows for easy creation of new database
objects. Say I would like an EmailAddress object, I would simply
create the MySQL table, extend the Entity class with an EmailAddress
class and populate the SQL variables with the correct SQL statements.
Until this far everything is ok. But what if I would like an extended
version of the objects PhoneNumber or Emailaddress? Say for example
that I would like an object called MobilePhoneNumber. The only
difference with the normal PhoneNumberClass is that it is of the type
MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
Objects for sending text messages). I would like to create a MySQL
table that consists of mobilephonenumerid's and phonenumberid's.
What would be the best way, rewriting the internals of the Entity
class and just fetch the data from MySQL right away or writing new
internals for the MobilePhoneNumbers class which create a
phoneNumberObject if it does not exist?
Hope that my problem and questions are clear, if not please ask for
more info.
Thanks in advance
Marijn

Hi Marijn

your problem is clear and well-known, particularly PoEAA book discusses
diverse approaches in detail (see e.g. "Single Table Inheritance" and
other ORM patterns).

--
gosha bine

extended php parser ~http://code.google.com/p/pihipi
blok ~http://www.tagarga.com/blok
Thanks for your respons Gosha. Do you have the isbn # of the book? Is
there other (online) literature you would advise me to read? What is
your experience with this problem. What I'm concerned with most is
that if I would want to extend a class which has rewritten innerworks
I have to rewrite them again and again every time I extend. This would
probably result in more coding than less, hence a bit past it's goal.
While rewriting the innerworks every time might be a more optimal
concerning speed...

Thanks,

Marijn

Jun 4 '07 #3

P: n/a
On 04.06.2007 13:59 Marijn wrote:
On Jun 4, 10:05 am, gosha bine <stereof...@gmail.comwrote:
>On 03.06.2007 21:33 Marijn wrote:
>>Hello everybody,
I am new to PHP and working on extending my knowledge of OOP. The
posts in this group concerned with whether or not to use an OO
approach when programming in PHP is not what I want to discuss in this
post. Rather I would like to discuss the best way to program the
following problem:
I have a MySQL Database which for example exists of phonenumbers. The
table might look something like this.
+---+---------------+------+
|ID | PHONENUMBER | FLAGS|
+---+---------------+------+
|001| 612341234| FALSE|
+---+---------------+------+
|002| 612341235| TRUE |
+---+---------------+------+
|...| ...| FALSE|
+---+---------------+------+
|00N| 612341238| FALSE|
+---+---------------+------+
An object representation in PHP might be the object PhoneNumber. The
object PhoneNumber would be extended from a general class called
Entity. The class Entity allows for easy creation of new database
objects. Say I would like an EmailAddress object, I would simply
create the MySQL table, extend the Entity class with an EmailAddress
class and populate the SQL variables with the correct SQL statements.
Until this far everything is ok. But what if I would like an extended
version of the objects PhoneNumber or Emailaddress? Say for example
that I would like an object called MobilePhoneNumber. The only
difference with the normal PhoneNumberClass is that it is of the type
MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
Objects for sending text messages). I would like to create a MySQL
table that consists of mobilephonenumerid's and phonenumberid's.
What would be the best way, rewriting the internals of the Entity
class and just fetch the data from MySQL right away or writing new
internals for the MobilePhoneNumbers class which create a
phoneNumberObject if it does not exist?
Hope that my problem and questions are clear, if not please ask for
more info.
Thanks in advance
Marijn
Hi Marijn

your problem is clear and well-known, particularly PoEAA book discusses
diverse approaches in detail (see e.g. "Single Table Inheritance" and
other ORM patterns).

--
gosha bine

extended php parser ~http://code.google.com/p/pihipi
blok ~http://www.tagarga.com/blok

Thanks for your respons Gosha. Do you have the isbn # of the book? Is
there other (online) literature you would advise me to read? What is
your experience with this problem. What I'm concerned with most is
that if I would want to extend a class which has rewritten innerworks
I have to rewrite them again and again every time I extend. This would
probably result in more coding than less, hence a bit past it's goal.
While rewriting the innerworks every time might be a more optimal
concerning speed...

Thanks,

Marijn
The official PoEAA site is http://www.martinfowler.com/books.html#eaa
There's also small patterns catalog on the site.

In my personal experience, I tend to use Table Gateways rather than
diverse ORM flavors because it's much simpler and uses aggregation
instead of inheritance.
--
gosha bine

extended php parser ~ http://code.google.com/p/pihipi
blok ~ http://www.tagarga.com/blok
Jun 4 '07 #4

P: n/a
On Jun 4, 2:39 pm, gosha bine <stereof...@gmail.comwrote:
On 04.06.2007 13:59 Marijn wrote:
On Jun 4, 10:05 am, gosha bine <stereof...@gmail.comwrote:
On 03.06.2007 21:33 Marijn wrote:
>Hello everybody,
I am new to PHP and working on extending my knowledge of OOP. The
posts in this group concerned with whether or not to use an OO
approach when programming in PHP is not what I want to discuss in this
post. Rather I would like to discuss the best way to program the
following problem:
I have a MySQL Database which for example exists of phonenumbers. The
table might look something like this.
+---+---------------+------+
|ID | PHONENUMBER | FLAGS|
+---+---------------+------+
|001| 612341234| FALSE|
+---+---------------+------+
|002| 612341235| TRUE |
+---+---------------+------+
|...| ...| FALSE|
+---+---------------+------+
|00N| 612341238| FALSE|
+---+---------------+------+
An object representation in PHP might be the object PhoneNumber. The
object PhoneNumber would be extended from a general class called
Entity. The class Entity allows for easy creation of new database
objects. Say I would like an EmailAddress object, I would simply
create the MySQL table, extend the Entity class with an EmailAddress
class and populate the SQL variables with the correct SQL statements.
Until this far everything is ok. But what if I would like an extended
version of the objects PhoneNumber or Emailaddress? Say for example
that I would like an object called MobilePhoneNumber. The only
difference with the normal PhoneNumberClass is that it is of the type
MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
Objects for sending text messages). I would like to create a MySQL
table that consists of mobilephonenumerid's and phonenumberid's.
What would be the best way, rewriting the internals of the Entity
class and just fetch the data from MySQL right away or writing new
internals for the MobilePhoneNumbers class which create a
phoneNumberObject if it does not exist?
Hope that my problem and questions are clear, if not please ask for
more info.
Thanks in advance
Marijn
Hi Marijn
your problem is clear and well-known, particularly PoEAA book discusses
diverse approaches in detail (see e.g. "Single Table Inheritance" and
other ORM patterns).
--
gosha bine
extended php parser ~http://code.google.com/p/pihipi
blok ~http://www.tagarga.com/blok
Thanks for your respons Gosha. Do you have the isbn # of the book? Is
there other (online) literature you would advise me to read? What is
your experience with this problem. What I'm concerned with most is
that if I would want to extend a class which has rewritten innerworks
I have to rewrite them again and again every time I extend. This would
probably result in more coding than less, hence a bit past it's goal.
While rewriting the innerworks every time might be a more optimal
concerning speed...
Thanks,
Marijn

The official PoEAA site ishttp://www.martinfowler.com/books.html#eaa
There's also small patterns catalog on the site.

In my personal experience, I tend to use Table Gateways rather than
diverse ORM flavors because it's much simpler and uses aggregation
instead of inheritance.

--
gosha bine

extended php parser ~http://code.google.com/p/pihipi
blok ~http://www.tagarga.com/blok
Already ordered the book on Amazon. I was wondering if anyone could
give me a small introduction to this problem in the post. Would like
to start thinking about the problem now instead of 48 hours when the
book arrives.

Thanks Marijn

Jun 4 '07 #5

P: n/a
On Jun 4, 11:06 am, Marijn <marijn.huizendv...@gmail.comwrote:
On Jun 4, 2:39 pm, gosha bine <stereof...@gmail.comwrote:
On 04.06.2007 13:59 Marijn wrote:
On Jun 4, 10:05 am, gosha bine <stereof...@gmail.comwrote:
>On 03.06.2007 21:33 Marijn wrote:
>>Hello everybody,
>>I am new to PHP and working on extending my knowledge of OOP. The
>>posts in this group concerned with whether or not to use an OO
>>approach when programming in PHP is not what I want to discuss in this
>>post. Rather I would like to discuss the best way to program the
>>following problem:
>>I have a MySQL Database which for example exists of phonenumbers. The
>>table might look something like this.
>>+---+---------------+------+
>>|ID | PHONENUMBER | FLAGS|
>>+---+---------------+------+
>>|001| 612341234| FALSE|
>>+---+---------------+------+
>>|002| 612341235| TRUE |
>>+---+---------------+------+
>>|...| ...| FALSE|
>>+---+---------------+------+
>>|00N| 612341238| FALSE|
>>+---+---------------+------+
>>An object representation in PHP might be the object PhoneNumber. The
>>object PhoneNumber would be extended from a general class called
>>Entity. The class Entity allows for easy creation of new database
>>objects. Say I would like an EmailAddress object, I would simply
>>create the MySQL table, extend the Entity class with an EmailAddress
>>class and populate the SQL variables with the correct SQL statements.
>>Until this far everything is ok. But what if I would like an extended
>>version of the objects PhoneNumber or Emailaddress? Say for example
>>that I would like an object called MobilePhoneNumber. The only
>>difference with the normal PhoneNumberClass is that it is of the type
>>MobilePhoneNumber (usage: A function only accepting MobilePhoneNumber
>>Objects for sending text messages). I would like to create a MySQL
>>table that consists of mobilephonenumerid's and phonenumberid's.
>>What would be the best way, rewriting the internals of the Entity
>>class and just fetch the data from MySQL right away or writing new
>>internals for the MobilePhoneNumbers class which create a
>>phoneNumberObject if it does not exist?
>>Hope that my problem and questions are clear, if not please ask for
>>more info.
>>Thanks in advance
>>Marijn
>Hi Marijn
>your problem is clear and well-known, particularly PoEAA book discusses
>diverse approaches in detail (see e.g. "Single Table Inheritance" and
>other ORM patterns).
>--
>gosha bine
>extended php parser ~http://code.google.com/p/pihipi
>blok ~http://www.tagarga.com/blok
Thanks for your respons Gosha. Do you have the isbn # of the book? Is
there other (online) literature you would advise me to read? What is
your experience with this problem. What I'm concerned with most is
that if I would want to extend a class which has rewritten innerworks
I have to rewrite them again and again every time I extend. This would
probably result in more coding than less, hence a bit past it's goal.
While rewriting the innerworks every time might be a more optimal
concerning speed...
Thanks,
Marijn
The official PoEAA site ishttp://www.martinfowler.com/books.html#eaa
There's also small patterns catalog on the site.
In my personal experience, I tend to use Table Gateways rather than
diverse ORM flavors because it's much simpler and uses aggregation
instead of inheritance.
--
gosha bine
extended php parser ~http://code.google.com/p/pihipi
blok ~http://www.tagarga.com/blok

Already ordered the book on Amazon. I was wondering if anyone could
give me a small introduction to this problem in the post. Would like
to start thinking about the problem now instead of 48 hours when the
book arrives.

Thanks Marijn
I implemented it with a DBObject superclass that defines inserts,
updates, and deletes, and defines an array of fields as a property.

The fields are each of type DBField, a utility class I used to define
MySQL fields.

Now, whenever I want to create a class based on a MySQL table, I
simply extend the DBObject class and initialize the fields array. I
abstracted a function in the superclass that defines the need for an
initFields(); function in the subclass, which fills in the fields
array.

My database-enabled classes dropped from around 400 lines to around
40, and I can literally write an application in half the time it used
to take using that framework. I haven't decided whether or not to
distribute the framework itself, mostly because I'm still putting it
through it's paces on a new app before I'll bless it.

The superclass builds its own queries based on the fields array, and
knows to exclude the id field from inserts (he assumes an
auto_increment in the key). With the DBField class, you can specify
whether or not to exclude it from inserts/updates as well as specify
static values for a specific query type.

That's the basic methodology I used, and damned if I even know whether
it fits into a pattern or not, just how I decided to implement my
MySQL DB framework.

~A!

Jun 5 '07 #6

This discussion thread is closed

Replies have been disabled for this discussion.