hosted by liquidweb


Go Back   Web Hosting Talk : Web Hosting Main Forums : Web Hosting Talk Tutorials : Programming Tutorials : How To : Improve Your PHP Programming
Closed Thread

Forum Jump

How To : Improve Your PHP Programming

Closed Thread Post New Thread In Programming Tutorials Subscription
 
Send news tip View All Posts Thread Tools Search this Thread Display Modes
  #1  
Old 07-21-2004, 01:29 AM
giropets giropets is offline
Junior Guru Wannabe
 
Join Date: May 2003
Location: United States
Posts: 54

How To : Improve Your PHP Programming


Hello everyone,

I've decided that I would make a thread here describing the different things that I do to improve other people's PHP scripts.

Hope you enjoy it and learn a thing or two.

1 - Your PHP Tags
I know some of you prefer to use the short tags when writing PHP scripts <? ?> but this is not always the best way of doing it.
The standard tags <?php ?> are much better as they will work on every server that you write your PHP code on. You may move to a server some day that doesn't allow the short tags or the ASP-style tags and you will have to sit for an hour and update your PHP scripts.

2 - Debugging Your PHP Code
Some of us may run into a problem when programming a PHP script and don't know what's wrong with it. The error_reporting() function in PHP helps you out by telling every error you have on your page. To show all of the errors on the page that you're editing, put this on the second line :
PHP Code:
error_reporting(E_ALL); 
3 - Debugging Your PHP Code (again)
When you finish editing your 1200-line PHP script, click onto it in your Internet browser, you see an error that says that is on line 561. Don't hit the panic-attack button quite yet, because there is an easy way to find out what line 561 is. Follow these easy steps :
- Open up Microsoft Notepad
- Paste your PHP script into it
- Go to 'Edit' >> 'Go To...' (or Control+G)
- Type in line #561 and hit the enter key
- Your cursor is taken to line #561.
- Look above and below line #561 to see if there is any kind of trouble.
- Fix the error, re-upload the script to your website, and most likely it will work. If there is another error, repeat the above steps.

4 - Using Comments
If you have a 1200-line PHP script, it may be quite hard to figure out what's going on all through-out it. The solution to figure out what you're doing is to add PHP-comments.
PHP-comments are different than the <!-- HTML Comments --> as they are not outputted to the user's page (meaning that they are not even going to see it in the source code).
There are three ways to make comments in PHP :
PHP Code:
<?php
// The double-backslash is my personal favorite.  I add another set after my code so that it looks even, though it is not necessary. //
# The hash-style comment is another way of making a comment.
/* And, this is the final way of making PHP-comments.  You can use
multiple
lines
at a time by using this style. */
?>
You can decorate it however you like, you are the only one who may use them.

5 - Indenting Your PHP Codes
I don't personally like to indent my PHP codes, but it helps when reading it. When I do have to, I use the tab key to accomplish this. Example :
PHP Code:
<?php
// Settings //
    
$var1 "This";

// Showing Variables //
    
if($var1 == "This"){
        echo
"You said This";
    }else{
        echo
"You said That";
    }
?>
6 - Improving your PHP-File Includes
I'm sure that most of us on here include a PHP file or two for our layouts. Well, what if your layout file was missing ? Wouldn't that look pretty unprofessional to the people on your website ?
In every PHP-script that I write, I make sure that the file exists before it is even included. Here's an example :
PHP Code:
<?php
if(!file_exists("layout.inc.php")){exit("Error :  LayOut File Missing");}else{include_once("layout.inc.php");}
?>
I'm sure that a small error message will seem better than half a page that is all messed-up looking.

7 - Your MySQL Queries
Sometimes when you're writing a PHP script that includes connections to your MySQL database, you may run into a few problems. Most everyone that had MySQL problems ran a command like this one :
PHP Code:
<?php
mysql_query
("INSERT INTO tableName ('id','name') VALUES('1','Mike')");
?>
..and they figure out that it's not inserting into their database. Here's the solution to this :
PHP Code:
<?php
mysql_query
("INSERT INTO tableName ('id','name') VALUES('1','Mike')") or exit("MySQL Error :  " mysql_error());
?>
8 - Combining Alike If-Then Statements
You may have a register page, and want to make sure that everything has been filled-in. You may use many if-then statements like so :
PHP Code:
<?php
if(!$_POST[name]){exit("Sorry, but you did not fill-in all of the requested fields.");}
if(!
$_POST[email]){exit("Sorry, but you did not fill-in all of the requested fields.");}
?>
You can combine these two lines into one by joining their if-then statements together :
PHP Code:
<?php
if((!$_POST[name]) || (!$_POST[email])){exit("Sorry, but you did not fill-in all of the requested fields.");}
?>
Simply, || is the same thing as OR and && is the same as AND.

9 - Using echo or print ?
Most of you may say 'echo is the same thing as print', in which I agree with you all. The echo command is much faster than the print command, and is one less character to type. The echo command came later than the print command (I believe), so you make the judement on which to use.

10 - Printing out a Huge Chunk of HTML at a Time
Well, I'm sure that many of us found a way to get around this, but I'd like to share with you a few of the ways you can do it.

1 - Break off your PHP-code, print the HTML, and start your PHP-code up again. (I don't prefer doing this as it looks pretty unprofessional to me).
2 - Adding backslashes to each HTML tag. (It works, but takes forever to do).
3 - Using the echo/print command, but without having to do much work. (I recommend) :
PHP Code:
<?php
// Showing a huge chunk of HTML at a time //
echo<<<END
<font face="Verdana" color="Orange" size="3">Large, Orange Text in Font Size 3</font>
<br><br>
More HTML down here..
<br><br>
<div align="Center">Centered text</div>
END;
?>
Well, I have many other things to tell about sprucing up your PHP-code, but I don't want to bore you.

I hope I've helped.

Best Regards,
- Mike.


Last edited by giropets; 07-21-2004 at 01:40 AM.


Sponsored Links
  #2  
Old 07-28-2004, 08:03 AM
MaJiD SaeeD Khan MaJiD SaeeD Khan is offline
Newbie
 
Join Date: Jun 2004
Location: Islamabad
Posts: 8
Very nice How To , and its not boring at all..your writing style is very interesting and i hope to have more ideas from your mind in the future. Thanx for sharing these tips.

__________________
MaJiD SaeeD Khan
Software Engineer - Bahriasoft
http://www.Bahriasoft.com

  #3  
Old 07-28-2004, 09:44 AM
Kar-aK Kar-aK is offline
Newbie
 
Join Date: Jul 2004
Posts: 22
Ild just like to point out something on the echo and print argument. You say "The echo command is much faster than the print command". I'ld like to point out why.

Print has a return value, echo does not.


Consider:


PHP Code:
<?php

if (print('foo')) { print('foo printed'); } // Will be true

if (echo('foo')) { echo('foo printed'); } // Will be false

?>
Evidently print will always return logical true (1), unless there is a serious error with PHP and the string does not print. Obviously PHP uses C prototypes but I will convert them into PHP so we can see what is going on.

PHP Code:
<?php

function print($stringToPrint) {
  
system.out($stringToPrint);
  return 
1;
}

function echo (
$stringToPrint) {
  
system.out($stringToPrint);
}

?>
Hope that helps clear that up.

- Kar

Sponsored Links
  #4  
Old 07-28-2004, 09:50 PM
jasonr33 jasonr33 is offline
Newbie
 
Join Date: Jul 2004
Location: Ann Arbor, MI
Posts: 13
The only things I would point out are:

1. Use variable names that make sense.

a) $string is a string, and $string_array is an array for example. $flag is a flag...

2. Put your code into functions as much as possible, and write your functions so they can be used in multiple projects - try not to write code that is proprietary to the project at hand.

a) save your functions in library files that you can use the 'include' command to call them up again in your projects.

__________________
-------------------------------------------
http://www.jmrtechnet.com

  #5  
Old 07-28-2004, 10:44 PM
giropets giropets is offline
Junior Guru Wannabe
 
Join Date: May 2003
Location: United States
Posts: 54
Hello again everyone,

Since all of you thought it was not boring, I've decided that I would add a few more to my list.

11 - Multiple Items in the If-Then Statement
As said in #8, you can combine alike if-then statements into one. This also works...
PHP Code:
if($this == "that" && $that == "this"){echo"This and that match";} 
But from experience, it is best to assign seperate brackets () around them as it does not confuse the code...
PHP Code:
if(($this == "that") && ($that == "this")){echo"This and that match";} 
12 - Saving Time with Varibles
When using functions, and you want to include a load of settings, you need to include every single of them at a time, as so...
PHP Code:
<?php
$time 
date("Y-m-d:H.i.s");
$name "Mike";
$comment "Just a simple comment";
function 
show(){
global 
$time,$name,$comment;
echo
"$time - $name - $comment";
}
show();
?>
..But you can save your time by including only one variable instead of three, as so...
PHP Code:
<?php
$_SETTINGS
[time] = date("Y-m-d:H.i.s");
$_SETTINGS[name] = "Mike";
$_SETTINGS[comment] = "Just a simple comment";
function 
show(){
global 
$_SETTINGS;
echo
"$_SETTINGS[time] - $_SETTINGS[name] - $_SETTINGS[comment]";
}
show();
?>
..Even though you'll spend a little more time by typing $_SETTINGS[] or just by copying and pasting it.

13 - Shortening exit(); and die(); Functions
If you want to stop the page load, you can use the exit(); or die(); functions. But, if this is all you want to do, then you can shorten it...
PHP Code:
exit();
exit;

die();
die; 
14 - More Usage of exit; and die;
If you want to stop the page load and show text, you can do this..
PHP Code:
echo"You did not finish all of the required fields.";
exit; 
...Or...
PHP Code:
exit("You did not finish all of the required fields."); 
15 - Using arrays to Store Data
Arrays are used to store temporary data in a PHP code. Here's an example...
PHP Code:
<?php
$names 
= array("Mike","Charlie","Amanda","Caroline");
echo 
$names[0]; // Outputs 'Mike'
echo $names[1]; // Outputs 'Charlie'
echo $names[2]; // Outputs 'Amanda'
echo $names[3]; // Outputs 'Caroline'
?>
That's all I can really suggest for now, some methods of doing things may work better than others, but you're the one to decide what works best.

Best of luck,
- Mike.


Last edited by giropets; 07-28-2004 at 10:48 PM.
  #6  
Old 08-05-2004, 08:43 PM
Ferneaux Ferneaux is offline
Junior Guru Wannabe
 
Join Date: Jun 2004
Location: USA, Ohio
Posts: 95
Very nicely done giropets.. *cheers*

__________________


  #7  
Old 08-05-2004, 09:17 PM
TonyB TonyB is offline
Corporate Member
 
Join Date: Aug 2004
Location: Canada
Posts: 3,388
That's very nice and informative for anyone specially beginners

Some other stuff to keep your code more clean and manageble would be to keep HTML and PHP completly seperate for the most part seperate files for them. So useing functions to call the html keep it much cleaner or a template system. Obviously functions like jasonr33 said specially for database stuff make it much easier.

Heck I've had the same functions for quite a while the same mysql, template and functions files you'd be surprised how much time is saved when all your php scripts use the same set of functions.

  #8  
Old 08-05-2004, 11:38 PM
websterworld websterworld is offline
Web Hosting Master
 
Join Date: Aug 2003
Posts: 4,273
Re: How To : Improve Your PHP Programming

Quote:
Originally posted by giropets


3 - Debugging Your PHP Code (again)
When you finish editing your 1200-line PHP script, click onto it in your Internet browser, you see an error that says that is on line 561. Don't hit the panic-attack button quite yet, because there is an easy way to find out what line 561 is. Follow these easy steps :
- Open up Microsoft Notepad
- Paste your PHP script into it
- Go to 'Edit' >> 'Go To...' (or Control+G)
- Type in line #561 and hit the enter key
- Your cursor is taken to line #561.
- Look above and below line #561 to see if there is any kind of trouble.
- Fix the error, re-upload the script to your website, and most likely it will work. If there is another error, repeat the above steps.

Best Regards,
- Mike.
Well Mike not a bad how-to, but this part IMHO is very wrong.
I strongly suggest that instead of using plain notepad/wordpad or ms-word to code your scripts you get a proper PHP editor such as PHPcoder or the one by Zend. (which is great, I love it. )

it has a ton of time saving advantages such as syntax highlighting and line numbering, 'etc.


Eugene

__________________
IWDN - Really smart web developers... and me!
More than any time in history mankind faces a crossroads.
One path leads to despair and utter hopelessness, the other to total extinction.
Let us pray that we have the wisdom to choose correctly.


  #9  
Old 08-05-2004, 11:39 PM
giropets giropets is offline
Junior Guru Wannabe
 
Join Date: May 2003
Location: United States
Posts: 54
I think I've figured it out the hard way, but thanks for letting me know as I take interest in it.

  #10  
Old 08-09-2004, 12:37 PM
brainbrian brainbrian is offline
Newbie
 
Join Date: Mar 2004
Posts: 14
I have recently begun to comment all my closing tags and that is really helping a lot. Like I did in the last two lines of this dummy code below. If there is a lot of stuff contains in the if tags where the opening and closing tags are far apart it helps to know where one starts and ends, as well as telling if your number of brackets match up.

PHP Code:
if ($something == "this") {
  for(
$i=0$i<10$i++) {
    echo 
$i;
    
$double[$i] = $i*2;
  } 
// for
// if 

  #11  
Old 08-09-2004, 05:03 PM
giropets giropets is offline
Junior Guru Wannabe
 
Join Date: May 2003
Location: United States
Posts: 54
That's actually not a bad idea, I should try using that from now on.

  #12  
Old 08-17-2004, 02:49 PM
cblc3kw cblc3kw is offline
Temporarily Suspended
 
Join Date: Aug 2004
Posts: 40
Yes. For clarity you can even do this for nested statements like
Code:
for($i = 0; $i < 10; $i++) {
for( ; ; ) {
break;
} // inner for
} // outer for

  #13  
Old 08-24-2004, 12:09 PM
jasonyates jasonyates is offline
Junior Guru Wannabe
 
Join Date: May 2003
Posts: 43
Quote:
<?php
if(!file_exists("layout.inc.php")){exit("Error : LayOut File Missing");}else{include_once("layout.inc.php");}
?>
I prefer to use a function to do this, for example...

Code:
function includeme ($addr) 
{
	//Check that file exists
	if (! file_exists($addr)) 
	{
		exit("Error :  '$addr' File Missing");		
	}
	
	//Include File
	include($addr);
}
This would go into your functions file which you include, the only down-side is you cant use the function for including your functions file :p

  #14  
Old 08-26-2004, 12:59 PM
scuba scuba is offline
New Member
 
Join Date: Aug 2004
Posts: 2
PHP Code:
<?php
mysql_query
("INSERT INTO tableName ('id','name') VALUES('1','Mike')") or exit("MySQL Error :  " mysql_error());
?>
One step furter is:

PHP Code:
<?php
$sql 
"SELECT value FROM table";
$query mysql_query($sql
or die(
"You got the error: " mysql_error() . "with the query: $sql");
?>



You should never make a variable like $_SETTINGS. The _ is there to show that it is a system (php-specific) variable like $_POST, $_GET and $_SERVER. Rather do $settings then!

PHP Code:
<?php
$_SETTINGS
[time] = date("Y-m-d:H.i.s");
$_SETTINGS[name] = "Mike";
$_SETTINGS[comment] = "Just a simple comment";
function 
show(){
global 
$_SETTINGS;
echo
"$_SETTINGS[time] - $_SETTINGS[name] - $_SETTINGS[comment]";
}
show();
?>

  #15  
Old 08-26-2004, 04:55 PM
giropets giropets is offline
Junior Guru Wannabe
 
Join Date: May 2003
Location: United States
Posts: 54
Thanks for pointing those out, scuba. I should try using the SQL lines you done in my code to help debug even better.

Closed Thread

Related posts from TheWhir.com
Title Type Date Posted
Uhuru Joins Effort to Bring .NET and SQL Server to OpenShift Web Hosting News 2014-03-06 10:33:15
INetU Launches High Performance Cloud Storage Solution Web Hosting News 2013-08-06 13:09:57
Cloudmark Shares Strategies to Avoid Email Blacklisting, Improve Deliverability Blog 2013-05-31 14:57:24
Rackspace Launches Fanatical Support for Developers Web Hosting News 2013-05-16 13:02:32
Oracle Expands Big Data Solutions with DataRaker Acquisition Web Hosting News 2012-12-14 10:46:42


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes
Postbit Selector

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump
Login:
Log in with your username and password
Username:
Password:



Forgot Password?
Advertisement:
Web Hosting News:
WHT Membership
WHT Membership



 

X

Welcome to WebHostingTalk.com

Create your username to jump into the discussion!

WebHostingTalk.com is the largest, most influentual web hosting community on the Internet. Join us by filling in the form below.


(4 digit year)

Already a member?