|
|
XXXIV. Function Handling functionsIntroduzione
These functions all handle various operations involved in working
with functions.
RequisitiQueste funzioni sono disponibili nei moduli standard,
che sono sempre disponibili. IstallazioneNon ` necessaria nessuna installazione per usare queste
funzioni, esse fanno parte del core di PHP. Configurazione RuntimeQuesta estensione non definisce
alcuna direttiva di configurazione Costanti PredefiniteQuesta estensione non definisce alcuna costante.
User Contributed Notes Function Handling functions |
|
[email protected]
23-Aug-2002 09:49 |
|
You can do some kind of overloading functions in PHP using
"function_exists".
Let's suppose you want a script to
call plugins that are php files and you want the plugins to
"override" behaviours that if not overriden are used by
default.
You might for example write a "mySQL table
viewer" which displays a table and it "opens a table",
"dumps the header", "dumps row-by-row" and then
"closes the table".
Let's suppose you want a plugin for
"Stocks" which prints negative stocks in red, so you want to
override the "dumping row-by-row" to do that behaviour. Instead
you do not want to have all the "default behaviour" repeated in
the plugin.
You may then do the following:
1) Define a
default plugin (ex: "default.php"
2) Write all your
functions in default.php to open, dump and close, but add them a
suffix:
open_table_default() dump_header_default() dump_row_default() close_table_default()
3)
Call your functions with a wrapper: Insetad of this: open_table() or
open_table_default() write
this:
plugincall("open_table");
4) Then write a
function called plugincall which uses function_exists() to see if you call
one or the other function:
function
plugincall($desired_function_name) {
if( function_exists(
$desired_function_name)) { //Call the plugin //Note the $
before the name $desired_function_name() } else {
$desired_function_name = $desired_function_name .
"_default"; if(
function_exists($desired_function_name)) { //Call the
default //Note the $ before the name
$desired_function_name() } else { // Nor the
plugin nor the default were defined } }
So, now, if the
require_once(plugin.php) contains a function called
"open_table()", it will be used. Instaed,
"open_table_default()" will be used.
It's not like
overloading functions, but it is very useful to write scripts ampliable by
other programmers: If they write a function, it is used, if not, the
default is used.
See ya! Xavier Montero.
|
|
|
| |