•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the PHP section within the Web Development category of DaniWeb, a massive community of 392,071 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 4,238 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our PHP advertiser: Lunarpages PHP Web Hosting
Views: 1465 | Replies: 5
![]() |
| |
•
•
Join Date: May 2006
Location: United Kingdom
Posts: 19
Reputation:
Rep Power: 3
Solved Threads: 0
•
•
Join Date: Aug 2005
Location: somewhere in time
Posts: 71
Reputation:
Rep Power: 3
Solved Threads: 2
IMHO, "Switch" is better if you have to qualify a variable with a lot of different possible values and each requires a different process.
"If" is better if you only have to test for a few possible values. A long list of If-ElseIf statements gets to be pretty hard to read sometimes.
I generally use "Switch" if I need to test for three or more possible values.
"If" is better if you only have to test for a few possible values. A long list of If-ElseIf statements gets to be pretty hard to read sometimes.
I generally use "Switch" if I need to test for three or more possible values.
Like TopDogger said, switch is a bit more readable if you're going to branch code more than 3 ways depending on a value.
I would recommend you try using a "factory method" though if you have many different processes.
This is a bit of code that acts as a switch statement but does not get bulkier when you add more "switches".
[php]
/**
* Factory method example
*/
function factoryChoice($choice, $choices, $params = false) {
if ( in_array($choice, $choices) ) {
call_user_func($choice, $params);
} else {
echo 'Attempt to run arbitrary code!';
}
}
/**
* Example usage
*/
$choice = $_GET['choice'];
$choices = array('add', 'edit', 'delete');
$params = array($_GET['param1'], $_GET['param2'],$_GET['param3']);
factoryChoice($choice, $choices, $params);
[/php]
What the factory method essensially does is take in a choice String, then matches it with predetermined choices Array. If the choice is allowed, it calls a functions of the same name as the choice.
What this does effectively is prevent you from hardcoding your switch statements, but instead allow a dynamic choices Array.
The dynamic choices Array can be fed from hardcoded values, like in the example, or read from a db etc.
You can even go further and set different access levels on your choices quite easily.
This would be much harder with hard coded switch or else/if statement.
Hope this still pertains to the topic.
I would recommend you try using a "factory method" though if you have many different processes.
This is a bit of code that acts as a switch statement but does not get bulkier when you add more "switches".
[php]
/**
* Factory method example
*/
function factoryChoice($choice, $choices, $params = false) {
if ( in_array($choice, $choices) ) {
call_user_func($choice, $params);
} else {
echo 'Attempt to run arbitrary code!';
}
}
/**
* Example usage
*/
$choice = $_GET['choice'];
$choices = array('add', 'edit', 'delete');
$params = array($_GET['param1'], $_GET['param2'],$_GET['param3']);
factoryChoice($choice, $choices, $params);
[/php]
What the factory method essensially does is take in a choice String, then matches it with predetermined choices Array. If the choice is allowed, it calls a functions of the same name as the choice.
What this does effectively is prevent you from hardcoding your switch statements, but instead allow a dynamic choices Array.
The dynamic choices Array can be fed from hardcoded values, like in the example, or read from a db etc.
You can even go further and set different access levels on your choices quite easily.
This would be much harder with hard coded switch or else/if statement.
Hope this still pertains to the topic.
www.fijiwebdesign.com - web design and development and fun
Cpanel Email - Let users Register email accounts on your website upon registration
Ajax Chat - Fully browser based chat!
Cpanel Email - Let users Register email accounts on your website upon registration
Ajax Chat - Fully browser based chat!
•
•
Join Date: Jul 2004
Location: North East Indiana
Posts: 491
Reputation:
Rep Power: 5
Solved Threads: 20
The big advantage to switch statements is that they make your code cleaner in appearance, and thusly easier to maintain. If you have more than two nested IF statements, it's probably time to use a switch.
www.uncreativelabs.net
Old computers are getting to be a lost art. Here at Uncreative Labs, we still enjoy using the old computers. Sometimes we want to see how far a particular system can go, other times we use a stock system to remind ourselves of what we once had.
Old computers are getting to be a lost art. Here at Uncreative Labs, we still enjoy using the old computers. Sometimes we want to see how far a particular system can go, other times we use a stock system to remind ourselves of what we once had.
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb PHP Marketplace
Similar Threads
- KVM SWITCH HELP! (Monitors, Displays and Video Cards)
- help for program involving switch loops and file (C++)
- LAN is not Working Properly After Changing Switch From 10 Mbps 100 Mbps (Networking Hardware Configuration)
- Cannot get switch to execute (C++)
- iis 5 through linksys wireless 4prt switch firewal (Windows NT / 2000 / XP / 2003)
Other Threads in the PHP Forum
- Previous Thread: Image Generation Problem
- Next Thread: echoing a quotation


Hybrid Mode