Re: design pattern/code generators

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



robert mena wrote:
Hi All,

I am looking for advice regarding design patterns/code generation in PHP5.

I have a simple code generation tool (written in PHP) to interface with
database.  It works fine for simple situations but seems a little
"strange" for more complex ones.

Suppose I have a table user (id, name, age) and a table
account(idAccount, idUser, name).  My generator creates a class for each
table and a standard db class.  Each class basically has a set/get
method for each property and some "standard" insert, delete, update,
search methods

ex.
class user
{
   var $db
   function setName(..)
   function getName()
   function insert()
   {
      $this->db->query("insert into user values...")
   }
...
}

I've omited the other methods/constructor but you can get the picture.

The problem comes when I have to access information the comes from 2+
tables.  Suppose I have to show all users accounts.   Now I end up with
something like this.

$u = new User() ;
$a = new Account() ;
if($u->search())
{
   for($i=0;$i<...)
   {
      $idUser = $u->getId() ;  $u->next() ;
       $a->setIdUser($idUser) ;
       if($a->search())
   {
      // print
   }
}

While this works I feel there must be an easier/cleaner way. If I was just
querying the database a join would give me the result in one pass.

the join is based on a foreign key constraint - An idea might be to generate a method based on the FK details (in either or both relevant classes), if you are using an older version of mysql, or don't actually define the constraint in the DB, then this maybe impossible - unless you use a config file to generate each class.

so that you can do:

$user = new User();
$ac = $user->getAccount(); // returns the correct Account object.



In my case what should I do ? create a new method "showAccounts" ? Where should I put it, in User or Account class ?

on the User class, Account would probably want a method like showUser().


I am interested in advices regarding how to design it better so I can make the proper adjustments in my generator.


-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux