PHP Object Generator Essentials

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

PHP OBJECT GENERATOR

ESSENTIALS
PHP Object Generator is an object -oriented code generator for PHP 4 and PHP 5 which uses the Object Relational Mapping (ORM) programming pattern to accelerate web development. ORM allows developers to forget about the underlying database and instead think about their web application in terms of objects. Normally, implementing this programming pattern makes the application easier to maintain in the long run, but since the initial code is generated for you, POG also gives you a head start.

The PHP objects are generated along with 5 CRUD Methods. The first 4 CRUD methods allow you to Save(), SaveNew(), Get () and Delete() objects easily to and from your database. The 5th CRUD method, GetList(), allows you to retrieve a list of objects from the database that meet certain conditions.

What follows is a condensed introduction to each CRUD method as well as code samples that will show you how to use the generated CRUD methods to accelerate web development in PHP.

SAVE()
The Save() CRUD method allows you to insert an object into your database. If the object already exists in the database, the object will be updated instead.

Save() returns the object Id of the inserted/updated object.

CODE EXAMPLES:

To save an object, simply do the following:

$ b oo k = n e w B o o k ( ) ; //create a book object $ b o o k - > t i t l e = " P h p i s c o o l " ; //assign a title to the book $ b o o k - > S a v e ( ) ; //this will insert the following record into the table $ b o o k - > t i t l e = " P h p i s v e r y c o o l " ; //modify the title of the book $ b o o k - > S a v e ( ) ; //this will update the record

You can also use the return value of the Save function for error handling:

$ b o o k = n e w B o o k ( ) ; //create a book object $ b o o k - > t i t l e = " P h p i s c o o l " ; //assign a title to the book $ b o o k - > S a v e ( ) ; //this will insert the following record into the table $ b o o k - > t i t l e = " P h p i s v e r y c o o l " ; //modify the title of the book i f ( $ b o o k -> S a v e ( ) ) { e c h o "book successfully saved"; } else { e c h o "something bad happened, couldn't save"; }

A common scenario is when you have to create a log in system to allow returning users to access their account.

$ u s e r = n e w U s e r ( ) ; //create a user object //get a list of user with username supplied $ u s er - > G e t U s e r L i s t ( " u s e r n a m e " , " = " , $ _ P O S T [ " u s e r n a m e " ] ) ; //assuming all usernames are unique, this should give you the correct user $currentUser = $userList[0]; i f ( $c u r r e n t User -> p a s s w o r d = = $ _ P O S T [ ' p a s s w o r d ' ] ) { //log user in either by putting user id in the session or serializing the entire user $ _ S E S S I O N [ ' u s e r I d ' ] = $ c u r r e n t User -> u s e r I d ; // either put userid in session $ _ S E S S I O N [ ' u s e r ' ] = s e r i a l i z e ( $ c u r r e n t User ) ; // or serialize user in sessio n } else { //user is not logged in e c h o "wrong username / password"; }

Another common scenario is when once a user is logged in, you want to allow him/her to modify some aspects of his/her profile on your website;

$ u s e r = n e w U s e r ( ) ; //create a user object $ u s e r -> G e t ( $ _ S E S S I O N [ ' u s e r I d ' ] ) ; //Get the logged in user //If you serialized the user in the example above, you can simply unserialize it $user = u n serialize($_SESSION['user']); $ u s e r -> f i r s t N a m e = $ _ P O S T [ ' f i r s t N a m e ' ] ; $ u s e r -> l a s t N a m e = $ _ P O S T [ ' l a s t N a m e ' ] ; $ u s e r -> S a v e ( ) ; //this will update the user profile by updating the new firstname and lastname supplied

GET()
The Get() CRUD method allows you to retrieve an object from your database, and must be supplied the Id of the object you want to retrieve. Since POG objects map to rows in a database table, you can think of GET as a method that allows you to fetch a specific row from your table, given that you specify the object id.

Get( $id) returns the entire object.

CODE EXAMPLES:

To retrieve an object, simply do the following:

$ b o o k = n e w B o o k ( ) ; //instantiate a book object $ b o o k ->G e t ( 1 ) //Gets book whose id is 1. e c h o $ b o o k -> t i t l e ; //This should output "Php is very cool"

SAVENEW()

The SaveNew() CRUD method allows you to clone an object and save it to your database. SaveNew() can also be used in situations where you want to force an INSERT, rather than let POG decide whether to INSERT or UPDATE

SaveNew() returns the obje ct Id of the inserted /updated object.

CODE EXAMPLES:

To clone an object, simply do the following:

$ b o o k = n e w B o o k ( ) ; //create a book object $ b o o k -> t i t l e = " P h p i s c o o l " ; //assign a title to the book $ b o o k -> S a v e ( ) ; //this will insert the this object in to the table $ b o o k -> t i t l e = " P h p i s v e r y c o o l " ; //modify the title of the book $ b o o k -> S a v e N e w ( ) ; //this will create a 2nd record.

GETLIST()
The GetList() CRUD method allows you to return a list of objects from your database using specific conditions. The GetList() method supports specifying multiple conditions, sorting and limiting the result set.

GetList takes 1 required parameter and 3 optional ones (optional parameters are in brackets) .

GetList($conditions [,$sortBy] [,$ascending] [,$limit]) returns an array of objects.

$conditions is an array of arrays containing the conditions you want to place on the query and should look like this:

$conditions = array( array(attribute1, comparator1, value1), a r r a y ( a t t r i b u t e 2 , c o m p a r a t o r 2 , v a l u e 2 ), ... )

Where

attribute (case sensitive) is the name of the attribute, for e.g .

bookTitle

comparator can be any valid SQL comparator. For e.g.

= , > , < , > = , < = , < >, L I K E ( o n l y i f d b e n c o d i n g i s t u r n e d o f f )

value is the value of the condition, for e.g.

Harry Potter

GetList then generates the appropriate SQL statement containing the conditions j o i n e d b y A N D. F o r e g :

$ c on d i t i o n s = array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), ... )

Will generate a SQL statement which looks like:

Select * from table where attribute1 = value1 AND attribute2 = value2.

A s f r o m P O G 2 . 5 , G e t L i s t ( ) c a n a l s o g e n e r a t e S Q L q u e r i e s i n Disjunctive Normal

Form, i.e. :
S e l e c t * f r o m t a b l e w h e r e a t t r i b u t e 1 = v a l u e 1 O R a t t r i b u t e 2 = v a l u e 2.

T h e G e t L i s t () p a r a m e t e r s t o p a s s a r e, i n t h i s c a s e :

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( O R ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), ... )

Note that when generating DNF statements, the order in which you pass the conditions matters . For example:

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), a r r a y ( O R ) , a r r a y ( a t t r i b u t e 3 , = , v a l u e 3 ), ... )

is equivalent to

Select * from table where ( attribute1 = value1 A N D attribute2 = value2) OR (a t t r i b u t e 3 = v a l u e 3)

whereas

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( O R ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), a r r a y ( a t t r i b u t e 3 , = , v a l u e 3 ), ... )

is equivalent to

S e l e c t * f r o m t a b l e w h e r e ( a t t r i b u t e 1 = v a l u e 1) O R ( a t t r i b u t e 2 = v a l u e 2 A N D attribute 3 = value3)

CODE EXAMPLES

To get a list of users whose age >10

$ u s e r = n e w U s e r ( ) ; //instantiate a user object $ u s e r L i s t = $ u s e r -> G e t L i s t ( a r r a y (a r r a y ( " a g e " , " > " , " 1 0 " ) ) ) ;

To get a list of users whose age >10 and who logged in more than 20 times, youd write something like this:

$user = new User(); $userList = $ u s e r -> G e t L i s t ( array ( array ("age", ">", "10"), array ("logInCount", ">", 20)

) );

To get a list of all books from your database, simply do the following:

$ b o o k = n e w B o o k ( ) ; //create a book object $ b o o k L i s t = $ b o o k - > G e L i s t (a r r a y (a r r a y ( " b o o k i d " , " > " , 0 ) ) ) ; foreach ($bookList as $book) { e c h o $ b o o k -> t i t l e ; }

To get the 10 most recent news objects from your database:

$ n e w s = n e w N e w s ( ) ; //create a news object; $newsList= $ n e w s-> G e t L i s t ( a r r a y (a r r a y ( " n e w s i d " , " > " , 0 ) ) , " d a t e " , // tells POG to so rt by the date column f a l s e, // tells POG to order by descending order 1 0 // tells POG to only return 10 results ); foreach($newsList as $news) { e c h o $ n e w s -> t i t l e ; }

To get the total number of books whose price is above $100 OR below $5:

$ b o o k = n e w B o o k ( ) ; //create a book object // returns a list of book objects whose price > 100 $bookList= $book - >Get List( array ( array ("price", ">", "100") ,

array(OR), array(price, <, 5) ) e c h o c o u n t ( $ b o o k L i s t ) ; //counts the number of object in the list

Using GetList for pagination:

$ b o o k = n e w B o o k ( ) ; //create a book object // the following command is useful if for example, you are listing 10 books per html page. //To get the results for page 1 you would do something like this: $book List= $book - >Get List( a r r a y (a r r a y ( " p r i c e " , " > " , " 1 0 0 " ) ) , " ", //tells POG to ignore this variable " ", //tells POG to ignore this variable "0 , 1 0 " //tells POG to return 10 rows starting from row 0 ); //To get the results for page 2 you would do something like this: $bookList= $book - >Get List( a r r a y (a r r a y ( " p r i c e " , " > " , " 1 0 0 " ) ) , " ", //tells POG to ignore this variable " ", //tells POG to ignore this variable "1 0 , 1 0 " //tells POG to return 10 rows starting from row 0 ); //To get the results for page 3 you would do something like this: $bookList= $book - >Get List( a r r a y (a r r a y ( " p r i c e " , " > " , " 1 0 0 " ) ) , " ", //tells POG to ignore this variable " ", //tells POG to ignore this variable "2 0 , 1 0 " //tells POG to return 10 rows starting from row 0 );

DELETE()
The Delete() CRUD method allows you to delete an object from your database.

Delete() returns true if t he deletion was completed successfully, false otherwise

CODE EXAMPLES:

To delete an object, simply do the following:

$ b o o k = n e w B o o k ( ) ; //create a book object $ b o o k - > G e t ( 1 ) ; //gets book whose id is 1 $ b o o k - > D e l e t e ( ) ; //deletes the record from the d atabase.

DELETELIST()
The Delete List() CRUD method allows you to delete all objects from your database that match certain conditions .

DeleteList ($conditions)

$conditions is an array of arrays containing the conditions you want to place on the query and should look like this:

$conditions = array( array(attribute1, comparator1, value1), a r r a y ( a t t r i b u t e 2 , c o m p a r a t o r 2 , v a l u e 2 ), ... )

Where

attribute is the name of the attribute, for e.g.

bookTitle

comparator can be any valid SQL comparator. For e.g.

= , > , < , > = , < = , < >, L I K E ( o n l y i f d b e n c o d i n g i s t u r n e d o f f )

value is the value of the condition, for e.g.

Harry Potter

DeleteList then generates the appropriate SQL statement containing the c o n d i t i o n s j o i n e d b y A N D. F o r e g :

$conditions = array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ),

... )

Will generate a SQL statem ent which looks like:

delete from table where attribute1 = value1 AND attribute2 = value2.

A s f r o m P O G 2 . 5 , D e l e t e L i s t ( ) c a n a l s o g e n e r a t e S Q L q u e r i e s i n Disjunctive Normal

Form, i.e. :
Delete f r o m t a b l e w h e r e a t t r i b u t e 1 = v a l u e 1 OR a t t r i b u t e 2 = v a l u e 2 .

The DeleteList() parameters to pass are, in this case:

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( O R ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), ... )

Note that when generating DNF statements, the order in which you pass the conditions matters. For example:

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), a r r a y ( O R ) , a r r a y ( a t t r i b u te3 , = , v a l u e 3 ), ... )

is equivalent to

d e l e t e f r o m t a b l e w h e r e ( a t t r i b u t e 1 = v a l u e 1 A N D a t t r i b u t e 2 = v a l u e 2) O R (a t t r i b u t e 3 = v a l u e 3)

whereas

array( a r r a y ( a t t r i b u t e 1 , = , v a l u e 1 ) , a r r a y ( O R ) , a r r a y ( a t t r i b u t e 2 , = , v a l u e 2 ), a r r a y ( a t t r i b u t e 3 , = , v a l u e 3 ), ... )

is equivalent to

d e l e t e f r o m t a b l e w h e r e ( a t t r i b u t e 1 = v a l u e 1) O R (a t t r i b u t e 2 = v a l u e 2 A N D attribute 3 = value3)

CODE EXAMPLES

To delete all users whose age >10

$ u s e r = n e w U s e r ( ) ; //instantiate a user object $ u s e r -> D e l e t e L i s t ( array (a r r a y ( " a g e " , " > " , " 1 0 " ) ) ) ;

To delete a list of users whose age >10 and who logged in more than 20 times, youd write something like this:

$user = new User(); $userList = $ u s e r -> D e l e t e L i s t ( array ( array ("age", ">", "10"), array ("logInCount", ">", 20)

To get the total number of books whose price is above $100 OR below $5:

$book= new Book(); //create a book object $ b o o k -> D e l e t eL i s t ( array (

array ("price", ">", "100"), array(OR), array(price, <, 5) )

USEFUL TIPS
USE SETUP
Use the POG setup script to create the database tables and perform some unit tests on your objects. A video of the setup process can be downloaded here: http://www.phpobjectgenerator.com/plog/file_download/9

NAMING CONVENTIONS
POG lets you name your object and attributes any way you want. However, for best results, we suggest you generate all your objects usi ng the same naming conventions. This is what we suggest

Capitalize the first letter of the object name. Use camel casing or use the underscore character for your attributes. For e.g.

a t t r i b u t e N a m e or a t t r i b u t e _ n a m e

MODIFYING & REGENERATING OBJECTS


Very often, as your requirements evolve, you will find the need to modify your objects by adding/removing attributes. There are 2 easy ways to achieve to regenerate your objects. In each object source code, POG generates and adds a URL in the header of the source code. It should look like this

@link: http://phpobjectgenerator.com/?objectName=&attributeList=&typeList=

Following this link in your browser should take you to the POG homepage with all the object name and attributes pre-filled for you. You can then add, remove and even reorder attributes (using the UP and DOWN arrow keys) .

You can also click on Regenerate Table in the setup interface, which will open a browser to the same location.

WE LOVE FEEDBACK

Dont be shy, come and talk to us on the POG Google Group: http://groups.google.com/group/Php-Object-Generator

Subscribe to our RSS feed to obtain the latest news: http://www.phpobjectgenerator.com/plog/rss/

Send us a hello through email: pogguys@phpobjectgenerator.com

You might also like