⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.php.svn-base

📁 j2me is based on j2mepolish, client & server for mobile application. server part
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
<?php/* SVN FILE: $Id: controller.php 4015 2006-11-28 23:37:51Z phpnut $ *//** * Base controller class. * * PHP versions 4 and 5 * * CakePHP :  Rapid Development Framework <http://www.cakephp.org/> * Copyright (c)	2006, Cake Software Foundation, Inc. *								1785 E. Sahara Avenue, Suite 490-204 *								Las Vegas, Nevada 89104 * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @filesource * @copyright		Copyright (c) 2006, Cake Software Foundation, Inc. * @link				http://www.cakefoundation.org/projects/info/cakephp CakePHP Project * @package			cake * @subpackage		cake.cake.libs.controller * @since			CakePHP v 0.2.9 * @version			$Revision: 4015 $ * @modifiedby		$LastChangedBy: phpnut $ * @lastmodified	$Date: 2006-11-28 17:37:51 -0600 (Tue, 28 Nov 2006) $ * @license			http://www.opensource.org/licenses/mit-license.php The MIT License *//** * Include files */	uses(DS . 'controller' . DS . 'component', DS . 'view' . DS . 'view');/** * Controller * * Application controller (controllers are where you put all the actual code) * Provides basic functionality, such as rendering views (aka displaying templates). * Automatically selects model name from on singularized object class name * and creates the model object if proper class exists. * * @package		cake * @subpackage	cake.cake.libs.controller * */class Controller extends Object{/** * Name of the controller. * * @var string * @access public */	var $name = null;/** * Stores the current URL (for links etc.) * * @var string * @access public */	var $here = null;/** * The webroot of the application * * @var string * @access public */	var $webroot = null;/** * Action to be performed. * * @var string * @access public */	var $action = null;/** * An array of names of models the particular controller wants to use. * * @var mixed A single name as a string or a list of names as an array. * @access protected */	var $uses = false;/** * An array of names of built-in helpers to include. * * @var mixed A single name as a string or a list of names as an array. * @access protected */	var $helpers = array('Html');/** * Parameters received in the current request, i.e. GET and POST data * * @var array * @access public */	var $params = array();/** * POST'ed model data * * @var array * @access public */	var $data = array();/** * Directory where controllers views are stored * Normaly this is automatically set * * @var string * @access public */	var $viewPath = null;/** * Variables for the view * * @var array * @access public */	var $viewVars = array();/** * Web page title * * @var boolean * @access public */	var $pageTitle = false;/** * An array of model objects. * * @var array Array of model objects. * @access public */	var $modelNames = array();/** * Base url path * * @var string * @access public */	var $base = null;/** * Layout file to use (see /app/views/layouts/default.thtml) * * @var string * @access public */	var $layout = 'default';/** * Automatically render the view (the dispatcher checks for this variable before running render()) * * @var boolean * @access public */	var $autoRender = true;/** * Automatically render the layout * * @var boolean * @access public */	var $autoLayout = true;/** * Array of components a controller will use * * @var array * @access public */	var $components = array();/** * The name of the View class a controller sends output to * * @var string * @access public */	var $view = 'View';/** * File extension for view templates. Defaults to Cake's conventional ".thtml". * * @var string * @access public */	var $ext = '.thtml';/** * Instance of $view class create by a controller * * @var object * @access private */	var $__viewClass = null;/** * The output of the requested action.  Contains either a variable * returned from the action, or the data of the rendered view; * You can use this var in Child classes afterFilter() to alter output. * * @var string * @access public */	var $output = null;/** * Automatically set to the name of a plugin. * * @var string * @access public */	var $plugin = null;/** * Used to set methods a controller will allow the View to cache * * @var mixed * @access public */	var $cacheAction = false;/** * Used to create cached instances of models a controller uses. * When set to true all models related to the controller will be cached, * this can increase performance in many cases * * @var boolean * @access public */	var $persistModel = false;/** * Replaced with Controller::beforeFilter(); * * @deprecated will not be avialable after 1.1.x.x */	var $beforeFilter = null;/** * Replaced with Router::parseExtensions(); * * @deprecated will not be avialable after 1.1.x.x */	var $webservices = null;/** * Constructor. */	function __construct() {		if ($this->name === null) {			$r = null;			if (!preg_match('/(.*)Controller/i', get_class($this), $r)) {				die ("Controller::__construct() : Can't get or parse my own class name, exiting.");			}			$this->name = $r[1];		}		if ($this->viewPath == null) {			$this->viewPath = Inflector::underscore($this->name);		}		$this->modelClass = Inflector::classify($this->name);		$this->modelKey = Inflector::underscore($this->modelClass);		if (is_subclass_of($this, 'AppController')) {			$appVars = get_class_vars('AppController');			$uses = $appVars['uses'];			$merge = array('components', 'helpers');			if ($uses == $this->uses && !empty($this->uses)) {				array_unshift($this->uses, $this->modelClass);			} elseif (!empty($this->uses)) {				$merge[] = 'uses';			}			foreach($merge as $var) {				if (isset($appVars[$var]) && !empty($appVars[$var]) && is_array($this->{$var})) {					$this->{$var} = array_merge($this->{$var}, array_diff($appVars[$var], $this->{$var}));				}			}		}		parent::__construct();	}	function _initComponents(){		$component = new Component();		$component->init($this);	}/** * Loads and instantiates models required by this controller. * If Controller::persistModel; is true, controller will create cached model instances on first request, * additional request will used cached models * * @return mixed true when single model found and instance created error returned if models not found. * @access public */	function constructClasses() {		if($this->uses === null || ($this->uses === array())){			return false;		}		if (empty($this->passedArgs) || !isset($this->passedArgs['0'])) {			$id = false;		} else {			$id = $this->passedArgs['0'];		}		$cached = false;		$object = null;		if ($this->persistModel === true){			uses('neat_array');		}		if($this->uses === false) {			if(!class_exists($this->modelClass)){				loadModel($this->modelClass);			}		}		if (class_exists($this->modelClass) && ($this->uses === false)) {			if ($this->persistModel === true) {				$cached = $this->_persist($this->modelClass, null, $object);			}			if (($cached === false)) {				$model =& new $this->modelClass($id);				$this->modelNames[] = $this->modelClass;				$this->{$this->modelClass} =& $model;				if ($this->persistModel === true) {					$this->_persist($this->modelClass, true, $model);					$registry = ClassRegistry::getInstance();					$this->_persist($this->modelClass . 'registry', true, $registry->_objects, 'registry');				}			} else {				$this->_persist($this->modelClass . 'registry', true, $object, 'registry');				$this->_persist($this->modelClass, true, $object);				$this->modelNames[] = $this->modelClass;			}			return true;		} elseif ($this->uses === false) {			return $this->cakeError('missingModel', array(array('className' => $this->modelClass, 'webroot' => '', 'base' => $this->base)));		}		if ($this->uses) {			$uses = is_array($this->uses) ? $this->uses : array($this->uses);			foreach($uses as $modelClass) {				$id = false;				$cached = false;				$object = null;				$modelKey = Inflector::underscore($modelClass);				if(!class_exists($modelClass)){					loadModel($modelClass);				}				if (class_exists($modelClass)) {					if ($this->persistModel === true) {						$cached = $this->_persist($modelClass, null, $object);					}					if (($cached === false)) {						$model =& new $modelClass($id);						$this->modelNames[] = $modelClass;						$this->{$modelClass} =& $model;						if ($this->persistModel === true) {							$this->_persist($modelClass, true, $model);							$registry = ClassRegistry::getInstance();							$this->_persist($modelClass . 'registry', true, $registry->_objects, 'registry');						}					} else {						$this->_persist($modelClass . 'registry', true, $object, 'registry');						$this->_persist($modelClass, true, $object);						$this->modelNames[] = $modelClass;					}				} else {					return $this->cakeError('missingModel', array(array('className' => $modelClass, 'webroot' => '', 'base' => $this->base)));				}			}			return true;		}	}/** * Redirects to given $url, after turning off $this->autoRender. * Please notice that the script execution is not stopped after the redirect. * * @param string $url * @param integer $status * @access public */	function redirect($url, $status = null) {		$this->autoRender = false;		$pos = strpos($url, '://');		$base = strip_plugin($this->base, $this->plugin);		if ($pos === false) {			if (strpos($url, '/') !== 0) {				$url = '/' . $url;			}			$url = FULL_BASE_URL . $base . $url;		}		if (function_exists('session_write_close')) {			session_write_close();		}		if ($status != null) {			$codes = array(				100 => "HTTP/1.1 100 Continue",				101 => "HTTP/1.1 101 Switching Protocols",				200 => "HTTP/1.1 200 OK",				201 => "HTTP/1.1 201 Created",				202 => "HTTP/1.1 202 Accepted",				203 => "HTTP/1.1 203 Non-Authoritative Information",				204 => "HTTP/1.1 204 No Content",				205 => "HTTP/1.1 205 Reset Content",				206 => "HTTP/1.1 206 Partial Content",				300 => "HTTP/1.1 300 Multiple Choices",				301 => "HTTP/1.1 301 Moved Permanently",				302 => "HTTP/1.1 302 Found",				303 => "HTTP/1.1 303 See Other",				304 => "HTTP/1.1 304 Not Modified",				305 => "HTTP/1.1 305 Use Proxy",				307 => "HTTP/1.1 307 Temporary Redirect",				400 => "HTTP/1.1 400 Bad Request",				401 => "HTTP/1.1 401 Unauthorized",				402 => "HTTP/1.1 402 Payment Required",				403 => "HTTP/1.1 403 Forbidden",				404 => "HTTP/1.1 404 Not Found",				405 => "HTTP/1.1 405 Method Not Allowed",				406 => "HTTP/1.1 406 Not Acceptable",				407 => "HTTP/1.1 407 Proxy Authentication Required",				408 => "HTTP/1.1 408 Request Time-out",				409 => "HTTP/1.1 409 Conflict",				410 => "HTTP/1.1 410 Gone",				411 => "HTTP/1.1 411 Length Required",				412 => "HTTP/1.1 412 Precondition Failed",				413 => "HTTP/1.1 413 Request Entity Too Large",				414 => "HTTP/1.1 414 Request-URI Too Large",				415 => "HTTP/1.1 415 Unsupported Media Type",				416 => "HTTP/1.1 416 Requested range not satisfiable",				417 => "HTTP/1.1 417 Expectation Failed",				500 => "HTTP/1.1 500 Internal Server Error",				501 => "HTTP/1.1 501 Not Implemented",				502 => "HTTP/1.1 502 Bad Gateway",				503 => "HTTP/1.1 503 Service Unavailable",				504 => "HTTP/1.1 504 Gateway Time-out"			);			if (isset($codes[$status])) {				header($codes[$status]);			}		}		if (defined('SERVER_IIS')) {			header('Location: ' . FULL_BASE_URL . $url);		} else {			header('Location: ' . $url);		}	}/** * Saves a variable to use inside a template. * * @param mixed $one A string or an array of data. * @param mixed $two Value in case $one is a string (which then works as the key). Unused if $one is an associative array, otherwise serves as the values to $one's keys. * @return mixed string or array of variables set * @access public */	function set($one, $two = null) {		if (is_array($one)) {			if (is_array($two)) {				return $this->_setArray(array_combine($one, $two));			} else {				return $this->_setArray($one);			}		} else {			return $this->_setArray(array($one => $two));		}	}/** * Internally redirects one action to another * * @param string $action The new action to be redirected to * @param mixed  Any other parameters passed to this method will be passed as *               parameters to the new action. * @access public */	function setAction($action) {		$this->action = $action;		$args = func_get_args();		unset($args[0]);		call_user_func_array(array(&$this, $action), $args);	}/** * Returns number of errors in a submitted FORM. * * @return int Number of errors * @access public */	function validate() {		$args = func_get_args();		$errors = call_user_func_array(array(&$this, 'validateErrors'), $args);		if ($errors === false) {			return 0;		}		return count($errors);	}/**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -