📄 xajax.inc.php
字号:
<?php
/**
* xajax.inc.php :: Main xajax class and setup file
*
* xajax version 0.2.4
* 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: xajax.inc.php,v 1.1 2006/07/21 15:29:46 elixir_inter Exp $
* @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;
/**#@-*/
/**
* 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;
}
/**
* 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;
}
/**
* Turns off decoding the input request args from UTF-8 (default behavior).
*/
function decodeUTF8InputOff()
{
$this->bDecodeUTF8Input = false;
}
/**
* Tells the response object to convert special characters to HTML entities
* automatically (only works if the mb_string extension is available).
*/
function outputEntitiesOn()
{
$this->bOutputEntities = true;
}
/**
* Tells the response object to output special characters intact. (default
* behavior).
*/
function outputEntitiesOff()
{
$this->bOutputEntities = false;
}
/**
* Registers a PHP function or method to be callable through xajax in your
* Javascript. If you want to register a function, pass in the name of that
* function. If you want to register a static class method, pass in an
* array like so:
* <kbd>array("myFunctionName", "myClass", "myMethod")</kbd>
* For an object instance method, use an object variable for the second
* array element (and in PHP 4 make sure you put an & before the variable
* to pass the object by reference). Note: the function name is what you
* call via Javascript, so it can be anything as long as it doesn't
* conflict with any other registered function name.
*
* <i>Usage:</i> <kbd>$xajax->registerFunction("myFunction");</kbd>
* or: <kbd>$xajax->registerFunction(array("myFunctionName", &$myObject, "myMethod"));</kbd>
*
* @param mixed contains the function name or an object callback array
* @param mixed request type (XAJAX_GET/XAJAX_POST) that should be used
* for this function. Defaults to XAJAX_POST.
*/
function registerFunction($mFunction,$sRequestType=XAJAX_POST)
{
if (is_array($mFunction)) {
$this->aFunctions[$mFunction[0]] = 1;
$this->aFunctionRequestTypes[$mFunction[0]] = $sRequestType;
$this->aObjects[$mFunction[0]] = array_slice($mFunction, 1);
}
else {
$this->aFunctions[$mFunction] = 1;
$this->aFunctionRequestTypes[$mFunction] = $sRequestType;
}
}
/**
* Registers a PHP function to be callable through xajax which is located
* in some other file. If the function is requested the external file will
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -