📄 xajax.inc.php
字号:
<?php/** * xajax.inc.php :: Main xajax class and setup file * * xajax version 0.2.5 * copyright (c) 2005 by Jared White & J. Max Wilson * http://www.xajaxproject.org * * xajax is an open source PHP class library for easily creating powerful * PHP-driven, web-based Ajax Applications. Using xajax, you can asynchronously * call PHP functions and update the content of your your webpage without * reloading the page. * * xajax is released under the terms of the LGPL license * http://www.gnu.org/copyleft/lesser.html#SEC3 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * @package xajax * @version $Id$ * @copyright Copyright (c) 2005-2006 by Jared White & J. Max Wilson * @license http://www.gnu.org/copyleft/lesser.html#SEC3 LGPL License *//* ---------------------------------------------------------------------------- | Online documentation for this class is available on the xajax wiki at: | | http://wiki.xajaxproject.org/Documentation:xajax.inc.php | ----------------------------------------------------------------------------*//** * Define XAJAX_DEFAULT_CHAR_ENCODING that is used by both * the xajax and xajaxResponse classes */if (!defined ('XAJAX_DEFAULT_CHAR_ENCODING')){ define ('XAJAX_DEFAULT_CHAR_ENCODING', 'utf-8' );}require_once(dirname(__FILE__)."/xajaxResponse.inc.php");/** * Communication Method Defines */if (!defined ('XAJAX_GET')){ define ('XAJAX_GET', 0);}if (!defined ('XAJAX_POST')){ define ('XAJAX_POST', 1);}/** * The xajax class generates the xajax javascript for your page including the * Javascript wrappers for the PHP functions that you want to call from your page. * It also handles processing and executing the command messages in the XML responses * sent back to your page from your PHP functions. * * @package xajax */ class xajax{ /**#@+ * @access protected */ /** * @var array Array of PHP functions that will be callable through javascript wrappers */ var $aFunctions; /** * @var array Array of object callbacks that will allow Javascript to call PHP methods (key=function name) */ var $aObjects; /** * @var array Array of RequestTypes to be used with each function (key=function name) */ var $aFunctionRequestTypes; /** * @var array Array of Include Files for any external functions (key=function name) */ var $aFunctionIncludeFiles; /** * @var string Name of the PHP function to call if no callable function was found */ var $sCatchAllFunction; /** * @var string Name of the PHP function to call before any other function */ var $sPreFunction; /** * @var string The URI for making requests to the xajax object */ var $sRequestURI; /** * @var string The prefix to prepend to the javascript wraper function name */ var $sWrapperPrefix; /** * @var boolean Show debug messages (default false) */ var $bDebug; /** * @var boolean Show messages in the client browser's status bar (default false) */ var $bStatusMessages; /** * @var boolean Allow xajax to exit after processing a request (default true) */ var $bExitAllowed; /** * @var boolean Use wait cursor in browser (default true) */ var $bWaitCursor; /** * @var boolean Use an special xajax error handler so the errors are sent to the browser properly (default false) */ var $bErrorHandler; /** * @var string Specify what, if any, file xajax should log errors to (and more information in a future release) */ var $sLogFile; /** * @var boolean Clean all output buffers before outputting response (default false) */ var $bCleanBuffer; /** * @var string String containing the character encoding used */ var $sEncoding; /** * @var boolean Decode input request args from UTF-8 (default false) */ var $bDecodeUTF8Input; /** * @var boolean Convert special characters to HTML entities (default false) */ var $bOutputEntities; /** * @var array Array for parsing complex objects */ var $aObjArray; /** * @var integer Position in $aObjArray */ var $iPos; /** * @var integer The number of milliseconds to wait before checking if xajax is loaded in the client, or 0 to disable (default 6000) */ var $iTimeout; /**#@-*/ /** * Constructor. You can set some extra xajax options right away or use * individual methods later to set options. * * @param string defaults to the current browser URI * @param string defaults to "xajax_"; * @param string defaults to XAJAX_DEFAULT_CHAR_ENCODING defined above * @param boolean defaults to false */ function xajax($sRequestURI="",$sWrapperPrefix="xajax_",$sEncoding=XAJAX_DEFAULT_CHAR_ENCODING,$bDebug=false) { $this->aFunctions = array(); $this->aObjects = array(); $this->aFunctionIncludeFiles = array(); $this->sRequestURI = $sRequestURI; if ($this->sRequestURI == "") $this->sRequestURI = $this->_detectURI(); $this->sWrapperPrefix = $sWrapperPrefix; $this->bDebug = $bDebug; $this->bStatusMessages = false; $this->bWaitCursor = true; $this->bExitAllowed = true; $this->bErrorHandler = false; $this->sLogFile = ""; $this->bCleanBuffer = false; $this->setCharEncoding($sEncoding); $this->bDecodeUTF8Input = false; $this->bOutputEntities = false; $this->iTimeout = 6000; } /** * Returns the current xajax version. * * @return string */ function getVersion() { return 'xajax 0.2.5'; } /** * Sets multiple flags based on the supplied associative array (see * {@link xajax::setFlag()} for flag names) * * @param array */ function setFlags($flags) { foreach ($flags as $name => $value) { $this->setFlag($name, $value); } } /** * Sets a flag (boolean true or false). Available flags with their defaults * are as follows: * * <ul> * <li>debug: false</li> * <li>statusMessages: false</li> * <li>waitCursor: true</li> * <li>exitAllowed: true</li> * <li>errorHandler: false</li> * <li>cleanBuffer: false</li> * <li>decodeUTF8Input: false</li> * <li>outputEntities: false</li> * </ul> * * @param string name of flag * @param boolean */ function setFlag($name, $value) { $sVar = 'b' . ucfirst($name); if (array_key_exists($sVar, get_object_vars($this))) { $this->$sVar = (boolean)$value; } else { trigger_error("The flag \"$name\" could not be found", E_USER_ERROR); } } /** * Returns the value of the flag * * @return boolean */ function getFlag($name) { $sVar = 'b' . ucfirst($name); if (array_key_exists($sVar, get_object_vars($this))) { return $this->$sVar; } else { return NULL; } } /** * Sets the timeout before xajax notifies the client that xajax has not been loaded * <i>Usage:</i> <kbd>$xajax->setTimeout(6000);</kbd> * * @param integer the number of milliseconds, or 0 to disable */ function setTimeout($iTimeout) { $this->iTimeout = $iTimeout; } /** * Returns the xajax Javascript timeout * * @return integer the number of milliseconds (or 0 if disabled) */ function getTimeout() { return $this->iTimeout; } /** * Sets the URI to which requests will be made. * <i>Usage:</i> <kbd>$xajax->setRequestURI("http://www.xajaxproject.org");</kbd> * * @param string the URI (can be absolute or relative) of the PHP script * that will be accessed when an xajax request occurs */ function setRequestURI($sRequestURI) { $this->sRequestURI = $sRequestURI; } /** * Sets the prefix that will be appended to the Javascript wrapper * functions (default is "xajax_"). * * @param string */ // function setWrapperPrefix($sPrefix) { $this->sWrapperPrefix = $sPrefix; } /** * Enables debug messages for xajax. * */ function debugOn() { $this->bDebug = true; } /** * Disables debug messages for xajax (default behavior). */ function debugOff() { $this->bDebug = false; } /** * Enables messages in the browser's status bar for xajax. */ function statusMessagesOn() { $this->bStatusMessages = true; } /** * Disables messages in the browser's status bar for xajax (default behavior). */ function statusMessagesOff() { $this->bStatusMessages = false; } /** * Enables the wait cursor to be displayed in the browser (default behavior). */ function waitCursorOn() { $this->bWaitCursor = true; } /** * Disables the wait cursor to be displayed in the browser. */ function waitCursorOff() { $this->bWaitCursor = false; } /** * Enables xajax to exit immediately after processing a request and * sending the response back to the browser (default behavior). */ function exitAllowedOn() { $this->bExitAllowed = true; } /** * Disables xajax's default behavior of exiting immediately after * processing a request and sending the response back to the browser. */ function exitAllowedOff() { $this->bExitAllowed = false; } /** * Turns on xajax's error handling system so that PHP errors that occur * during a request are trapped and pushed to the browser in the form of * a Javascript alert. */ function errorHandlerOn() { $this->bErrorHandler = true; } /** * Turns off xajax's error handling system (default behavior). */ function errorHandlerOff() { $this->bErrorHandler = false; } /** * Specifies a log file that will be written to by xajax during a request * (used only by the error handling system at present). If you don't invoke * this method, or you pass in "", then no log file will be written to. * <i>Usage:</i> <kbd>$xajax->setLogFile("/xajax_logs/errors.log");</kbd> */ function setLogFile($sFilename) { $this->sLogFile = $sFilename; } /** * Causes xajax to clean out all output buffers before outputting a * response (default behavior). */ function cleanBufferOn() { $this->bCleanBuffer = true; } /** * Turns off xajax's output buffer cleaning. */ function cleanBufferOff() { $this->bCleanBuffer = false; } /** * Sets the character encoding for the HTTP output based on * <kbd>$sEncoding</kbd>, which is a string containing the character * encoding to use. You don't need to use this method normally, since the * character encoding for the response gets set automatically based on the * <kbd>XAJAX_DEFAULT_CHAR_ENCODING</kbd> constant. * <i>Usage:</i> <kbd>$xajax->setCharEncoding("utf-8");</kbd> * * @param string the encoding type to use (utf-8, iso-8859-1, etc.) */ function setCharEncoding($sEncoding) { $this->sEncoding = $sEncoding; } /** * Causes xajax to decode the input request args from UTF-8 to the current * encoding if possible. Either the iconv or mb_string extension must be * present for optimal functionality. */ function decodeUTF8InputOn() { $this->bDecodeUTF8Input = true; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -