note 24639 added to ref.funchand

From: Date: Fri, 23 Aug 2002 18:49:03 +0000
Subject: note 24639 added to ref.funchand
Groups: php.notes 
Request: Send a blank email to php-notes+get-35419@lists.php.net to get a copy of this message
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. -- http://www.php.net/manual/en/ref.funchand.php http://master.php.net/manage/user-notes.php?action=edit+24639 http://master.php.net/manage/user-notes.php?action=delete+24639 http://master.php.net/manage/user-notes.php?action=reject+24639

« previous php.notes (#35419) next »