`

[原创]SS FrameWork For PHP 4.0 (专注于extjs和flex的PHP MVC核心框架)

阅读更多
这是我以前写的PHP MVC 框架核心, 麻雀虽小五脏俱全,完整代码详见附件 SS FrameWork For PHP 4.0.rar

该框架主要用于php与extjs(json),flex(xml)的交互操作, 简单而实用,不像zend 那么臃肿(zend的功能你能用到20%已经很好了)

由于采用了ant, build前请下载JRE, 并设置好JAVA_HOME,CLASSPATH和PATH(或者放到jre目录), 然后点击install.bat,最后将build目录就是你要找的目录

======================================
几个核心代码:

index.php
<?php
require( 'define.php' );

/**
 * SS FrameWork 3.0 For PHP
 * @author 影枫.爪哇 <mail@shadowsnow.com>
 * @copyright 2009-2011 skanion.iteye.com
 * @version 3.0
 * @since 2011.09.14
 */
$ctrl=isset($_REQUEST['c']) ? trim($_REQUEST['c']) : 'index';
$action=isset($_REQUEST['a']) ? ($_REQUEST['a']) : 'index';
ss_conf('db');
ss_conf('web');
ss_sys('db');
//db::getInstance()->query('SET NAMES UTF8');
ss_sys('id');
ss_sys('ip');
ss_sys('chklogin');
ss_sys('cache');
chklogin::init();
ip::setIp();
ss_model($ctrl);
ss_call_ctrl($ctrl,$action);


define.php
<?php
define('SS', 'ShadowSnow');
define('ACCESS', 'Access Declined.');
define('DS', DIRECTORY_SEPARATOR);
define('WEBROOT', dirname(__FILE__) .DS);
define('CLASSES',WEBROOT . 'classes' .DS);
define('FUN', CLASSES . 'function' .DS);
define('INC', CLASSES . 'inc' .DS);
define('MODEL', CLASSES . 'model' .DS);
define('SYS', CLASSES . 'system' .DS);
define('CONF', WEBROOT . 'config' .DS);
define('CTRL', WEBROOT . 'controller' .DS);
define('VIEW', WEBROOT . 'view' .DS);
define('CACHE', WEBROOT . 'cache' .DS);
define('PUB', WEBROOT . 'public' .DS);
define('IMGAE', PUB . 'image' .DS);
define('JS', PUB . 'js' .DS);
define('CSS', PUB . 'css' .DS);
define('PAGE', PUB . 'page' .DS);
define('SWF', PUB . 'swf' .DS);
define('URL', 'http://'. $_SERVER['SERVER_NAME']. '/');
define('JsonURL', 'http://'. $_SERVER['SERVER_NAME']. '/index.php');
//date_default_timezone_set("Etc/GMT-8");
date_default_timezone_set('Asia/Shanghai');
//echo date_default_timezone_get();
error_reporting(E_ALL);
ini_set('display_errors','On'); 
require( FUN. 'autoload.fun.php');
ss_conf('chk_lang');
ss_conf('lang_' . chk_lang::$lang);
ss_fun('main');
ss_fun('filter');
ss_sys('ss');
session_start();


db.sys.php:
<?php

defined('SS') or exit('Access Declined.');

class db_base
{

	var $host = "";
	var $database = "";
	var $user = "";
	var $password = "";
	var $port = "";
	var $socket = "";
	var $record = array();
	var $insert_id;
	var $errno = 0;
	var $error = "";
	var $type = "mysql";
	var $sql  = "";
	var $link = false;
	var $result = false;
	var $locked = false;
	var $helper_db;
	var $select = array();
	var $from = '';
	var $join = array() ;
	var $on = array();
	var $where = array();
	var $orwhere = array();
	var $order = array();
	var $limit = '';
	var $pconnect = false;
	var $prepared_statement = false;


	private static $Singleton;
	
	public function __construct()
	{
		$this->set_config();
	}

  public static function GetInstance()
  {
      if(!(self::$Singleton instanceof db)){
         self::$Singleton=new db();
      }
      return self::$Singleton;
  }

	public function set_config()
	{
		if (class_exists('db_config')){
			$this->type      = db_config::$db_type;	
			$this->host      = db_config::$db_host;
			$this->database  = db_config::$db_name;
			$this->user      = db_config::$db_user;
			$this->password  = db_config::$db_pass;			
			$this->port      = db_config::$db_port;
			$this->socket    = db_config::$db_socket;			
		}
	}

	public function set_parameters($type, $host, $database, $user, $pass, $port=3306, $socket='')
	{
		$this->type = $type;
		$this->host = $host;
		$this->database = $database;
		$this->user = $user;
		$this->password = $pass;
		$this->port = $port;
		$this->socket = $socket;
	}

	public function connect(){}

	function free() {}
	
	function clear() 
	{
		$this->select = array();
		$this->from = '';
		$this->join = array();
		$this->on = array();
		$this->where = array();
		$this->orwhere = array();
		$this->order = array();	
		$this->limit = '';
	}

	public function selects($select=array())
	{
		if(!is_array($select)) $select=array($select);
		if (count($select) > 0)	$this->select = $select;
	}
	
	public function froms($from= '')
	{
		if ($from) $this->from = $from;
	}
	
	public function joins($join=array())
	{
		if(!is_array($join)) $join=array($join);
		if (count($join) > 0) $this->join = $join;		
	}
	
	public function ons($on=array())
	{
		if(!is_array($on)) $on=array($on);
		if (count($on) > 0) $this->on = $on;			
	}
	
	public function wheres($where=array())
	{
		if(!is_array($where)) $where=array($where);
		if (count($where) > 0) $this->where = $where;			
	}

	public function orwheres($orwhere=array())
	{
		if(!is_array($orwhere)) $orwhere=array($orwhere);
		if (count($orwhere) > 0) $this->orwhere = $orwhere;			
	}	
	
	public function orders($order=array())
	{
		if(!is_array($order)) $order=array($order);
		if (count($order) > 0) $this->order = $order;			
	}

	public function limits($limit='')
	{
		if($limit)	$this->limit=	$limit . '';
	}	

	public function getQuerySql()
	{

			$sql = '';
			if(count($this->select) > 0){
				$sql .= "SELECT " . implode(',', $this->select);	
			}
			else{
				$sql .= "SELECT * ";
			}	
			
			if($this->from){
				$sql .= " FROM ". $this->from ." ";		
			}
			else{
				return false;
			}						
			
			if( count($this->on)> 0){
					$ons = "";
					$i = 0;
					foreach ($this->on as $key => $value){
						$sql .= " LEFT JOIN ".$this->join[$i]." ON  " .$key. " = " .$value. " ";
						$i++;
					}
			}					
			

			$isWhere = false;
			if(count($this->where) > 0){
					$isWhere = true;
				  $sql .= " WHERE  ";
				  $ands = '';
					foreach ($this->where as $key => $value){
						if (!is_numeric($key)){
							$ands .= " AND " .$key. " = '" .$value. "' ";
						}
						else{
							$ands .= " AND " .$value. " ";
						}
					}
					if (substr($ands,0,4) == ' AND') $ands = substr($ands,4);
					$sql .= $ands;
			}
						
			if(count($this->orwhere) > 0){
				  if(!$isWhere) $sql .= " WHERE ";
				  $ors = '';
					foreach ($this->orwhere as $key => $value){
						if (!is_numeric($key)){
							$ors .= " OR " .$key. " = '" .$value. "' ";
						}
						else{
							$ors .= " OR " .$value. " ";
						}
					}
					if (substr($ors,0,3) == ' OR' && !$isWhere) $ors = substr($ors,3);
					$sql .= $ors;							
			}
			
			if(count($this->order) > 0){
				$sql .= " ORDER BY " . implode(',', $this->order);	
			}		
			
			if($this->limit){
				$sql .= ' LIMIT '.$this->limit .' ';
			}		
			
			return $sql;			
	}

	public function querySql($sql){}

	public function query($sql = '')
	{
		$this->connect();
		$this->free();
		if ($sql){
				$this->result = $this->querySql($sql);
				if(!$this->result) $this->result = false;
				$this->sql = $sql;
				return $this->result;
		}
		else{
					$sql = $this->getQuerySql();
					$this->result = $this->querySql($sql);	
					if(!$this->result) $this->result = false;
					$this->clear();	
					$this->sql = $sql;
					return $this->result;
		}
	}

	public function querys($sql = '')
	{
		return $this->query($sql);
	}

	public function next_record($type = MYSQL_ASSOC) {}


	public function lock($table, $mode = "write") 
	{
		$query = "lock tables ";
		if(is_array($table)) {
			while(list($key,$value) = each($table)) {
				if(is_int($key)) $key = $mode;
				if(strpos($value, ",")) {
					$query .= str_replace(",", " $key, ", $value) . " $key, ";
				} else {
					$query .= "$value $key, ";
				}
			}
			$query = substr($query, 0, -2);
		} elseif(strpos($table, ",")) {
			$query .= str_replace(",", " $mode, ", $table) . " $mode";
		} else {
			$query .= "$table $mode";
		}
		if(!$this->query($query)) {
			$this->halt("lock() failed.");
			return false;
		}
		$this->locked = true;
		return true;
	}

	public function unlock() 
	{
		$this->locked = false;
		if(!$this->query("unlock tables")) {
			$this->halt("unlock() failed.");
			return false;
		}
		return true;
	}

	public function f($name) 
	{
		if (isset($this->record[$name])) {
			return $this->record[$name];
		}
		else{
			return false;
		}
	}

	public function p($name)
	{
		if (isset($this->record[$name])) {
			print $this->record[$name];
		}
	}

	public function nextid($table) 
	{
		$sql = "select " .$table. "_id from " .$table. " order by " .$table. "_id desc";
		if(!$this->query($sql)) {
			$this->halt('query failed in nextid: '.$sql);
			return 0;
		}
		
		if(!$this->next_record()) {
			return 1;
		}
		else {
			return $this->f($table. "_id") + 1;
		}
	}

	public function insert_id() {}


	public function num_rows() {}

	public function affected_rows() {}
	
	public function num_fields() {}


	public function update_row($table, $index, $fields)
	{
		$this->connect();
		if(!is_array($fields))
		{
			$this->halt('Invalid update row called');
			return false;
		}
		if(!is_array($index))
		{
			$index = array($index);
		}

		$field_types='';
		$index_types='';
		$count=0;
		$indexes=array();

		foreach($fields as $key => $value)
  		{
  			if(!in_array($key, $index))
  			{
  				if (!is_numeric($key)){
  					$updates[] = "`$key`='".$this->escape($value)."'";  				
  				}
  				else{
  					$updates[] = $value;    				
  				}
  				
  			}
  		}
	  	if(isset($updates))
	  	{
	  		$sql = "UPDATE `$table` SET ".implode(',',$updates)." WHERE ";	  		
	
				$indexes=array();
				foreach($index as $subindex)
				{
					$indexes[]="`$subindex`='".$this->escape($fields[$subindex])."'";
				}
				$sql .= implode(' AND ', $indexes);
				$this->query($sql);
				return $this->affected_rows();
	  	}
			
		return false;
	}

	public function insert_row($table, $fields,$replace='')
	{
		$this->connect();
		if(!is_array($fields))
		{
			$this->halt('Invalid insert row called');
			return false;
		}
		
		foreach($fields as $key => $value)
		{
			$field_names[] = $key;
			if(is_numeric($value)){
				$field_values[] = $value;
			}
			else{
				$field_values[] = "'".$value."'";
			}
			//$field_values[] = $this->escape($value);
		}
		if(isset($field_names))
		{
				$sql = $replace ? 'REPLACE' : 'INSERT';
				$sql .= " INTO `$table` (`".implode('`,`', $field_names)."`) VALUES ";
	  		$sql .=	"(".implode(",", $field_values).")";
	  		//$sql .=	"('".implode("','", $field_values)."')";
	  		//tip($sql);
				$this->query($sql);
				return $this->affected_rows();
		}else
		{
			$this->halt('Error insering row');
		}
		return false;
	}

	public function delete_row($table, $where = array())
	{
		$this->connect();
		if(!is_array($where)) $where=array($where);
		if(count($where) > 0){
			$where_ = '';
			foreach ($where as $key => $value){
				if (!is_numeric($key)){
					$where_ .= " AND " .$key. " = '" .$value. "' ";
				}
				else{
					$where_ .= " AND " .$value. " ";
				}
			}
			if (substr($where_,0,4) == ' AND') $where_ = substr($where_,4);
			$where_ = ' WHERE  '. $where_;
		}
		
		$sql  = "DELETE FROM " .$table;
		$sql .= $where_;
		$this->query($sql);
		return $this->affected_rows();
	}

	public function replace_row($table, $fields)
	{
		return $this->insert_row($table, $fields, 'REPLACE');
	}

	public function escape($value, $trim=true){}


	protected function set_log($level, $message)
	{
			$messages = str_split($message, 500);
			for ($i = 0; $i < count($messages); $i ++) {
				syslog($level, $messages[$i]);
			}
	}

	protected function halt($msg)
	 {

		if ($this->locked) {
			$this->unlock();
		}

		$this->set_log(LOG_DEBUG, sprintf("Database Error: [ %s ]\n\nMySQL Error: [ %s (%s) ]",
		$msg,
		$this->errno,
		$this->error));

		tip(sprintf("Database Error: [ %s ]\n\nMySQL Error: [ %s (%s) ]",	
		$msg,
		$this->errno, 
		$this->error));
	}

	public function close(){}
	

	public function found_rows()
	{
		if(!isset($this->helper_db)){
			$this->helper_db = new db();
		}
		$this->helper_db->query("SELECT FOUND_ROWS() as found;");
		$this->helper_db->next_record();
		return $this->helper_db->f('found');
	}


	public function table_exists($table_name)
	{
		if(!isset($this->tables)){
			$this->tables=array();
			$this->query('SHOW TABLES');
			while($r=$this->next_record(MYSQL_NUM)){
				$this->tables[]=$r[0];
			}
		}
		return in_array($table_name, $this->tables);
	}
}

if (class_exists('db_config')){
	if(db_config::$db_type == 'mysqli' && function_exists('mysqli_close')){
		ss_sys('mysqli');	
	}
	else{
		ss_sys('mysql');	
	}
}



autoload.fun.php
<?php

	defined('SS') or exit('Access Declined.');
  
  function ss_ctrl($controller)   
  {   
  	    if(!empty($controller)){
	        $file = CTRL . $controller . '.ctrl.php';
	        if (is_file($file)) {   
	            require_once($file);   
	        }
        }   
  }   
  
  function ss_sys($class)   
  {   
  	
        $file = SYS . $class . '.sys.php';
        if (is_file($file)) {   
            require_once($file);   
        }   
  }   
  
  function ss_model($class)   
  {   
        $file = MODEL . $class . '.class.php';
        if (is_file($file)) {   
            require_once($file);   
        }   
  }   
  
  function ss_fun($function)   
  {   
        $file = FUN . $function . '.fun.php';
        if (is_file($file)) {   
            require_once($file);   
        }   
  }   
  
  function ss_inc($inc)   
  {   
        $file = INC . $inc . '.inc.php';
        if (is_file($file)) {   
            require_once($file);   
        }   
  }    
  
  function ss_view($view)   
  {   
	      $file = VIEW . $view . '.view.php';
	      if (is_file($file)) {   
	          require_once($file);   
	      }
 
  }   
  
  function ss_conf($config)   
  {   
	      $file = CONF . $config . '.conf.php';
	      if (is_file($file)) {   
	          require_once($file);   
	      }
 
  }  
  
   function ss_cache($cache)   
  {   
	      $file = CACHE . $cache . '.cache.php';
	      if (is_file($file)) {   
	          require_once($file); 	      }

  } 
  
  function ss_swf($swf)   
  {   
	      $file = SWF . $swf . '.php';
	      if (is_file($file)) {   
	          require_once($file);   
	      }
  }    
  
  function ss_call_ctrl($ctrl= 'index',$action = 'index')   
  {   
  		ss_sys('ctrlbase');
  		$action .= 'Action';
			ss_ctrl($ctrl);
			$ctrlClass = $ctrl.'Ctrl';
			if (class_exists($ctrlClass)){
				$reflectionClass=new ReflectionClass($ctrlClass); 
				call_user_func($ctrlClass.'::init');
				if ($reflectionClass->hasMethod($action)){
					$reflectionMethod=$reflectionClass->getMethod($action);  
					if($reflectionMethod->isStatic()){
						call_user_func($ctrlClass.'::'.$action);
					}
					else{
						call_user_func(array($ctrlClass,$action)); 
					}
				}				
				
			}

  }     
 
  spl_autoload_register('ss_model');



cache.sys.php
<?php

defined('SS') or exit('Access Declined.');
define('CACHE_TIME',db_config::$db_cache);
define('CACHE_CLEAR_TIME',db_config::$db_cache_clear);
define('CACHE_CLEAR_SWITCH',db_config::$db_cache_switch);


class cache
{
   private static $Singleton;
   public static function GetInstance()
   {
      if(!(self::$Singleton instanceof self)){
         self::$Singleton=new self();
      }
      return self::$Singleton;
   }
   
   public static  function get_cache_name($name,$minute = false)
   {
   		if (!$minute) {
   			$minute = CACHE_TIME;
   		}
   		$hour = date('Ymd-H');
   		$minute = ceil(intval(date('i')) / $minute) * $minute;
			return CACHE. $name . '[' . $hour .$minute .'].cache.php';
   }
  
   public static function auto($name, $data,$minute = false)
   {
		$content = self::get($name,$minute);
		if($content){
			return $content;
		}
		else{
			return self::set($name,$data,$minute);
		}		  
   }  
  
  
   public static function get($name,$minute = false)
   {
	   	if (CACHE_CLEAR_SWITCH == 'on'){
	   		self::clear();
	   		$cache = self::get_cache_name($name,$minute);
				if (is_file($cache)){
					return unserialize(file_get_contents($cache));			
				}
	   	}
			return false;
   }

      
   public  static function set($name, $data,$minute = false) 
   {
   		if (CACHE_CLEAR_SWITCH == 'on'){
			  $cache = self::get_cache_name($name,$minute);
	  		$file = @fopen($cache, 'w');
	  		@fwrite($file,serialize($data));
		    @fclose($file); 
   		}
	    return $data;
    }      
      
   public static function clear() 
   {
		$cache = CACHE. 'log.cache.php';
		$time = time();
		if(is_file($cache)){
			if ( ($time - intval(file_get_contents($cache))) < CACHE_CLEAR_TIME* 60 ){
				return true;
			}
		}

		self::deldir(CACHE);
	  $file = @fopen($cache, 'w');
	  @fwrite($file, $time);
		@fclose($file);	
		return false;				
   } 
   
   public static function del($name,$minute = false)
   {
		 @unlink(self::get_cache_name($name,$minute));
	 } 	    
   
   
   public static function deldir($dir)
   {
		 self::delfile($dir);
	 } 
   
   public static function delfile($dir) 
   {

			if (is_dir($dir)) {
					if ($dh = @opendir($dir)) {
							while (($file = @readdir($dh)) !== false) {
							if ($file!="." && $file!=".." && $file!="log.cache.php") {
								  $fullpath=$dir."/".$file;
									if(!is_dir($fullpath)) {
									    @unlink($fullpath);
									          
									} else {
									    self::delfile($fullpath);
									    @rmdir($fullpath);
									}
							}
					}
					@closedir($dh);
					}
			} 

	}
   
   private function __clone(){}
   public function __construct(){}
}

6
2
分享到:
评论
12 楼 Hillray 2012-01-17  
今天才发现这个好东西!向楼主求一份完整的源码和一些相关案例,我的邮箱是hui.deng@foxmail.com, 谢谢。
11 楼 sigleboy 2011-11-18  
谢谢,请给我发送一份。sigleboy@126.com.
10 楼 skanion 2011-10-03  
SS FrameWork 4.0 已经完成编写, 支持伪静态, 支持模板替换, 支持postgresql,支持properties...
相关文档逐步更新中
9 楼 skanion 2011-09-23  
框架国庆后将有更新,除了access 和 mysql, 还将支持postgresql数据库, 可读取properties资源文件[数据库参数], 而且注释也完备,附上使用范例
8 楼 skanion 2011-09-16  
happysoul 写道
没有注释?偶这等 php 0.1bate 型的人看了等于什么都没写一样。。。


注释是有的,不过放在另外一个案例里,我还没有空整合在一起,过几天一起放上去吧
7 楼 happysoul 2011-09-16  
没有注释?偶这等 php 0.1bate 型的人看了等于什么都没写一样。。。
6 楼 skanion 2011-09-16  
keshion 写道
求一份完整的加案例,谢谢!yufeng_0924@163.com

加案例的要过几天,因为我的那个案例有些部分不能完全公开.偶还得核实下
5 楼 keshion 2011-09-16  
求一份完整的加案例,谢谢!yufeng_0924@163.com
4 楼 skanion 2011-09-16  
等我有空帮你发, 有些目录大了点
3 楼 xinxian 2011-09-16  
贴出来共同学习下,要不发份完整的到我qq邮箱可以吧:402615964@qq.com
2 楼 skanion 2011-09-15  
若需要该框架的案例,也可以找我, 事实上也是挺实用的
1 楼 skanion 2011-09-15  
还有其他一些辅助类,没有放进去, 主要是有关 phpexcel和fpdf 的调用类, 各位如有需要问我拿就是了

相关推荐

    extjs4.0帮助文档 extjs-docs-4.0.2.zip

    extjs4.0开发人员以及学习可以下载参考

    ExtJS4.0项目教程(MVC)

    【ExtJS4.0项目教程(MVC)】是一个针对ExtJS 4.0框架的教程,主要关注其MVC架构的应用。MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的数据模型、用户界面和控制逻辑,使得开发更易于维护和扩展...

    Extjs4.0+MVC模式+存动态加载

    ExtJS 4.0 是一个强大的JavaScript框架,用于构建富客户端Web应用程序。它引入了全新的MVC(Model-View-Controller)设计模式,这使得应用的结构更加清晰,代码更易于管理和维护。在这个主题中,我们将深入探讨如何...

    自己写的ExtJS4.0用MVC的示例

    总结来说,这个“自己写的ExtJS4.0用MVC的示例”展示了如何利用MVC模式在客户端构建复杂的应用程序,提供了良好的代码组织和可维护性。通过研究这个示例,你可以学习到如何有效地使用模型、视图和控制器,以及它们...

    Extjs 4.0中文版API

    Extjs 4.0中文版API

    Extjs4.0 mvc模式开发

    ExtJS 4.0 是一个强大的JavaScript框架,用于构建富客户端Web应用程序。它引入了Model-View-Controller(MVC)架构模式,帮助开发者更好地组织和管理代码,提高项目的可维护性和可扩展性。在本工程中,我们将深入...

    ExtJs4.0官方版本

    ExtJS 4.0是Sencha公司开发的一款强大的JavaScript前端框架,主要用于构建富客户端Web应用程序。这个官方版本的发布标志着ExtJS在功能、性能和可维护性方面的一个重要里程碑。以下将详细介绍ExtJS 4.0中的核心概念、...

    Jquery-Extjs4.0框架

    本篇将详细探讨这两个框架在Jquery-Extjs4.0中的结合使用及其核心概念。 **jQuery框架** jQuery是一个轻量级、高性能的JavaScript库,它的主要目标是简化DOM操作、事件处理、动画制作以及Ajax交互。jQuery的核心...

    extjs 4.0 extjs

    `ext-all-debug-w-comments.js`, `ext-all-debug.js` 和 `ext-all.js` 是ExtJS的核心库文件,分别代表带有注释的调试版本、调试版本和生产版本。调试版本包含额外的错误检查和日志记录,便于开发过程中定位问题;...

    extjs4.0技术

    **Extjs4.0** 是一款强大的企业级前端框架,它可以帮助开发者快速构建复杂的用户界面,并且提供了丰富的组件和功能。对于初学者来说,理解其核心概念和基础操作是非常重要的。 ##### 获取Extjs4.0 - **官方网站**:...

    ExtJs4.0 手册中文版

    在《ExtJs4.0 手册中文版》中,你可以找到关于ExtJS 4.0的全面介绍和详细指南。这个手册涵盖了框架的基础知识,如MVC架构、组件系统、数据绑定以及事件处理机制。此外,它还深入讲解了如何使用各种组件,如GridPanel...

    Extjs4.0通用后台管理系统源码完整大型项目(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    可二次开发Extjs4.0通用后台管理系统源码完整大型项目。数据库在项目里面的一个sql文件里面 1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高...

    Extjs4 + Asp.net MVC Demo

    ExtJS4 + ASP.NET MVC Demo是一个结合了前端ExtJS4框架和后端ASP.NET MVC架构的应用示例,展示了如何在Web开发中实现数据操作的增删改查功能,并且利用了ExtJS4的MVC模式来提高代码的组织性和可维护性。这个Demo还...

    extjs4.0 MVC 示例代码

    EXTJS 4.0 是一个强大的JavaScript框架,用于构建富客户端Web应用程序。MVC(Model-View-Controller)模式是EXTJS中实现复杂应用架构的关键设计模式,它将应用程序的不同部分分离出来,使得代码更易于维护和扩展。...

    EXTjs4.0学习文档

    EXTJS 4.0 提供了丰富的、非常漂亮的外观体验,成为众多界面层开发人员的追捧,更重要的是它核心的组件基本覆盖了我们构建富客户端的常用的组件以及各种功能,在统计方面做的也非常出色。 在 4.0 版本中,EXTJS ...

    ExtJS4.0 MVC 学习资料集合

    ExtJS4.0是Sencha公司推出的一款强大的JavaScript前端框架,专用于构建富客户端Web应用程序。MVC(Model-View-Controller)模式是其核心设计模式,帮助开发者组织和管理复杂的代码结构,提高代码可维护性和可扩展性...

    Extjs 4.0 MVC分页实例

    ExtJS 4.0 是一个强大的JavaScript框架,用于构建富客户端Web应用程序。在这个MVC(Model-View-Controller)分页实例中,我们将探讨如何利用ExtJS 4.0的MVC架构来实现数据的分页展示。MVC模式是软件工程中的一个设计...

    EXTJS简单MVC实例

    只要将解压的文件直接放置到myeclipse的webroot下面,启动tomcat访问。简单的EXTJS mvc框架,设计 store,model,controller,view,window等等,同时展示了一些基本的点击显示、修改等等操作,需要的同学自行下载

    ExtJs4.0 mvc 模式

    ExtJS 4.0 是一个强大的JavaScript框架,用于构建富客户端Web应用程序。它引入了Model-View-Controller(MVC)设计模式,帮助开发者更好地组织和管理代码,提高可维护性和可扩展性。在本实例中,我们将深入探讨ExtJS...

    Extjs4.0、Extjs3.0教程CHM版和PDF版,中文版API

    本资源包含ExtJS 4.0和3.0的教程及API文档,对于学习和掌握这个框架至关重要。 首先,我们来看ExtJS 4.0的教程。ExtJS 4.0引入了重大的更新,包括全新的架构、改进的布局系统和更丰富的组件库。其中,新架构引入了...

Global site tag (gtag.js) - Google Analytics