- 浏览: 345026 次
文章分类
最新评论
-
亚当爱上java:
"给pre-commit添加可执行权限:chmod ...
svn强制要求提交注释--pre-commit钩子 -
rosasyou:
不知道这篇文章是怎么才让人看的?估计不是浏览器兼容问题。 ,与 ...
Zend Framework的DB处理 -
jinjiankang:
$youngest=`svnlook youngest $sv ...
svn备份策略 -
wangxc:
你好,我按照你介绍的方法在创建完weekly_backup.p ...
svn备份策略 -
yangfuchao418:
...
关于memcached的浅见
转载自: http://semiscon.blog.51cto.com/157645/36976
版权属于原作者
何谓单点入口呢?我想PHP4时代的时候有一个很响亮的代名词“工厂模式”,因为你在开发一个大型项目的时候可能会遇到N多的类和需要你包含的类库文件,
如果你把所有的类文件都写在一个程序页面里,在每一个需要使用的页面上都include包含过来,这样将会造成效率大大降低。
不过还好,php5时代多了一个相当实用的函数__autoload(),也就是说你只需要将这个函数的文件包含进来,在你声明一个对象以后,这个函数会自动加载这个类文件,下面我用实例来演示一下如何使用__autoload()来完成MVC模式下的单点入口结构。
这是我一个流量分析系统的整体结构
大家可以很清晰的看到,整个系统下面只有index.php文件作为调度文件,你可以暂时把他理解成一个工厂的传达室。
cache是smarty模版的缓存文件目录.
compile是模版编译过后的暂存文件
images存放图片素材和CSS样式表
lib库文件存放目录核心目录之一
smarty模版主目录
tpl存放的是HTML静态模版,当然在必要的时候也做一些简单的判断。
www整站系统的核心目录。
我们先看一下index.php
里面的内容
<?php
/*
############################网站流量分析系统页面注释##########################
系统核心文件,包含实例化一个smarty对象
根据GET得到的参数来选择调用哪一个程序页面
@Email: semiscon1983@hotmail.com.cn
*/
//include_once("./lib/class.php");
//做个对比,没有使用__autoload之前需要包含成个库函数
//页面是干净了,但效率依然低下
include_once("./lib/public_function.php");
//使用__autoload()函数自动调用相对应的类文件
include_once('./smarty/Smarty.class.php');
$s = new Smarty;
//$s->caching = true;//开启缓存功能
$s->template_dir = './tpl';
$s->compile_dir = './compile';
$s->cache_dir = './cache';
$n = strtolower(trim($_GET['n']));
//用trim去掉前后空格 然后用strtolower进行小写转换
//如果传入参数n的值为空就调用main.php页面进行转向index.html
if (empty($n)) { $s->display("index.html"); exit(); }
switch($n) {
case "last" : include_once "./www/lastvisit.php"; break;
case "daily" : include_once "./www/daily.php"; break;
case "month" : include_once "./www/month.php"; break;
case "year" : include_once "./www/year.php"; break;
case "area" : include_once "./www/area.php"; break;
case "ref" : include_once "./www/ref.php"; break;
case "query" : include_once "./www/query.php"; break;
default : $s->display("index.html");
}
?>
一个核心调度文件就是这么简单,根据GET过来的值来引入相对应的程序页面。我们再看看包含文件之一的./lib/public_function.php
<?php
function __autoload($class_name)
{
require_once $class_name . '.php';
}
?>
这时候我在一个www目录下的程序里面声明对象的时候就不需要再把这个类文件包含过来了
比如www目录下的daily.php
<?php
include("conn.php");
//##############获得今天日期######################
$date1 = date("Y-m-d");
//如果用户GET过来一个值是act的一个函数
if(isset($_GET["act"])) { //判断这个变量是否被设置了
$yyy = sprintf("%04s",$_GET["y"]); //年数据
$mmm = sprintf("%02s",$_GET["m"]); //月数据
$ddd = sprintf("%02s",$_GET["d"]); //日数据
$date1 = $yyy."-".$mmm."-".$ddd; //根据用户输入的参数,得到日期字符串
}
/*
以上这些代码是为了历史查询页面搜索数据时使用的
*/
$date2 = date("Y年m月d日");
$s->assign("today",$date2); //将本月的日期传入模版
//------------- 创建daily对象实例-----------------
$daily = new daily();
//只需要去声明这个对象就可以了,系统自动包含类文件
//-------------导入当前时间的函数------------------
$daily->__getSql("select name,value from counter_daily where date='$date1' ;");
$daily->__setDate($date1);
//--------将相对应的属性和函数返回值赋值给变量--------
$h = $daily->__getHour();
$sum = $daily->sum;
$hper = $daily->__getPercent();
//-------------将获得变量传入模版------------------
$s->assign("h",$h);
$s->assign("sum1",$sum);
$s->assign("hper",$hper);
$s->display("daily.html");
?>
而且__autoload()函数还可以自动把继承的父类也一起调用,比如这个每月流量分析表的类文件就很简单
./lib/month.php
<?php
//-----月份查询使用的类,继承daily类部分属性和方法--------
class month extends daily
{
public $i =1;
public $s = 32;
}
?>
其实我并没有完全按照MVC的架构去写这个系统,只是实现了视图view和控制器controller,那么逻辑层的模型Model被一个执行层代替了,也就是说用index.php进行控制和调用,tpl下的编辑模版去面向客户,然后由mod和lib进行执行和运算。
以上只是我这段时间在家学习PHP的一点心得,希望能对和我一样喜欢PHP的朋友有一些帮助。
发表评论
-
图片压缩的一些心得
2010-11-03 11:45 2004http://blog.lizhigang.net/arc ... -
PHP程序员面临的成长瓶颈
2010-10-25 10:06 2016作为Web开发中应用最广泛的语言之一,PHP有着大量的粉丝 ... -
URL重写相关
2010-07-26 18:13 1210初级URL重写指南 http://lamp.lin ... -
关于PHP的mod_rewrite重写模块技术个人觉得最好的一篇文章
2010-07-26 09:30 2255最近手里一个PHP项目要用到mod_rewrite模块,很 ... -
PHP源代码分析- tick(s)
2010-07-24 10:13 1978By Altair, http://www.phpint ... -
php多线程编程
2010-07-21 23:52 1057http://www.cnblogs.com/niniwzw/ ... -
php pcntl_fork和pcntl_fork 的用法
2010-07-21 22:23 2142http://www.jb51.net/article/177 ... -
探讨高并发写入文件内容
2010-07-11 22:48 2826读写相关的问题是永远存在的,文件锁就是为了解决这个问题而做的, ... -
php中,高并发状态下文件的读写
2010-07-11 22:28 8783对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些 ... -
HTTP POST from PHP, without cURL
2010-07-06 17:28 1622Update May 2010: This is one ... -
php fsockopen解决办法。
2010-07-06 15:07 3176Author:David | English Ver ... -
用 PHP V5 开发多任务应用程序
2010-07-04 00:39 1229http://www.ibm.com/developerw ... -
git使用总结
2010-07-02 23:51 1358http://zhwen.org/?p=articles/gi ... -
Linux消息队列原理与应用
2010-07-02 18:03 9513http://www.wanglong-neu.cn/ ... -
我说PHPer的水平区分(转载)
2010-07-02 10:55 1467说句实话,写这个真够无 ... -
正则表达式解题经验谈
2010-06-29 22:08 1093正则表达式解题经验谈 ... -
深入浅出之正则表达式
2010-06-28 21:14 800dragon.cnblogs.com/archive/2006 ... -
stream_set_blocking让程序无阻塞
2010-06-28 09:48 1383stream_set_blocking让程序 ... -
什么是Socket?Socket协议的形象描述
2010-06-28 00:11 1583socket的英文原义是“ ... -
完善匹配中文的Php正则表达式
2010-06-11 16:15 2294这段时间试图使用php正 ...
相关推荐
“PHP开发中MVC模式的应用研究” 本文旨在探讨PHP开发中MVC模式的应用研究,涵盖MVC模式的主要构成要素、设计原理、具体应用等方面。MVC模式是软件设计与开发中的一种重要模式,它的主要构成要素包括模型、视图、...
MVC模式是PHP开发中的重要概念,通过分离关注点,提高了Web应用的可维护性和可扩展性。Zend Framework作为PHP的主流框架之一,充分利用了MVC模式的优势,提供了良好的开发框架和工具,使得开发者能够更高效地构建和...
### PHP与MVC开发模式详解 #### MVC设计模式概述 MVC,即Model-View-Controller,是一种广泛应用于软件工程,尤其是Web应用开发中的设计模式。该模式最早可追溯至20世纪70年代,旨在解决软件开发中的复杂性和耦合...
很多开发者对 MVC 模式有误解,认为 MVC 模式只能用于 Web 开发,实际上,MVC 模式可以应用于任何软件开发中。还有一些开发者认为,MVC 模式很难实现,实际上,MVC 模式只是将应用程序分离成三个独立的部分,并不难...
MVC 开发模式详解 MVC(Model-View-Controller)是一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。MVC 的全名是 Model View Controller,是模型(Model)-视图(View)-控制器(Controller...
这些模式在构建用户界面时起着至关重要的作用,尤其是在Web和移动应用开发中。 首先,我们来理解MVC模式。Model代表应用程序的数据模型,负责存储和管理数据;View是用户界面,用于展示数据;Controller作为两者...
在软件开发中,特别是Web应用程序领域,MVC(Model-View-Controller)模式是一种广泛使用的架构模式,它有助于将业务逻辑、数据处理和用户界面分离,提高代码的可维护性和可扩展性。在MVC架构中,"单一入口"是一个...
### 浅谈框架与MVC #### 架构的重要性及概念 在软件开发领域,架构设计扮演着至关重要的角色。良好的架构设计不仅能够确保软件系统的稳定性、可维护性和可扩展性,还能提升团队协作效率。正如文章所述,“好的产品...
### 浅谈模型-视图-控制器(MVC)模式 #### 一、MVC模式简介 MVC(Model-View-Controller),即模型-视图-控制器模式,是一种广泛应用于软件开发领域的设计模式,特别是在桌面应用和Web应用程序中。这种模式的...
asp.net mvc 单点登录Demo 无需第三方单独域名 实现原理可以参见codeproject中的单点登录的一篇文章: http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic
本文将深入探讨两种常见的设计模式——MVC(Model-View-Controller)和MVP(Model-View-Presenter),并结合实际的TestMVP项目,解析它们在实际开发中的运用。 首先,我们来了解一下MVC模式。MVC是一种软件设计模式...
**MVC 开发模式详解** MVC(Model-View-Controller)是一种广泛应用于软件开发,尤其是Web应用开发的架构模式。这种模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现更...
这是一个根据MVC模式开发的一个小型框架。 说明: framework文件是框架文件,可将其重命名成你的项目名 Index.php文件是项目的入口文件 Config目录下的config文件配置了数据库的连接,网站url的访问方式 Control...
**MVC设计模式详解及其在项目开发中的应用** MVC(Model-View-Controller)设计模式是一种广泛应用在Web开发中的架构模式,它将应用程序的业务逻辑、用户界面和控制逻辑分离,以提高代码的可维护性和可重用性。在这...
### 浅析MVC模式在WEB开发中的应用 #### 引言 随着互联网技术的快速发展,Web应用程序变得越来越复杂和庞大。传统的嵌套和面向过程的开发方式已无法满足当前项目的需求。在这种背景下,MVC(Model-View-Controller...
在PHP开发中,MVC(Model-View-Controller)框架模式是一种常见的软件设计模式,它将应用程序的不同部分分离开来,使得代码结构清晰,易于维护和扩展。MVC模式主要包含三个核心组件: 1. **模型(Model)**:模型层...
在实际开发中,有许多流行的Web框架采用了MVC模式,例如Java的Spring MVC,PHP的Laravel,ASP.NET的ASP.NET MVC,以及前端的AngularJS等。这些框架提供了强大的工具和结构,帮助开发者遵循MVC模式构建应用程序。 **...
本实例主要探讨如何在JSP中应用MVC模式进行开发,特别适合初学者学习。 **一、MVC模式介绍** MVC模式是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种...
总结来说,MVC设计模式通过分离关注点,提高了软件的可维护性和可扩展性,而MFC的Doc/View架构则是MVC模式在Windows应用开发中的具体实现,它通过提供丰富的类库和事件驱动机制,简化了MVC的使用,使得开发者能够更...