|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...编程 【甚么是MVC?】
MVC是一个可让你把“三个局部(即MVC的全称,Model、View、Controller)”谐调地构成一个庞杂使用法式的概念。一辆汽车就是一个在实际生涯中十分好的MVC例子。咱们看车都看两个View(显示)局部:外部和内部。而这两个都离不开一个Controller(掌握者):司机。刹车体系、偏向盘和其他操控体系代表了Model(模子):他们从司机(Controller)那边获得掌握办法然后使用到外部和外不雅(View)。
【收集上的MVC】
MVC框架所涵盖的概念相当复杂而且极端天真。根基的概念就是,你有一个独自的掌握器(如index.php)用来掌握一切创立在参数恳求基本上的框架内使用法式。这个掌握器凡是包括了(最小水平上)一个界说模子的参数、一个事务和一个GET参数。如许掌握器就可以确认一切的恳求然后运转响应的事务。打个例如来讲,一个像如许/index.php?module=foo&event=bar的恳求很有能够就是用来载入一个名叫foo的类,然后运转foo::bar()[就是个中的bar()函数]。如许做的优点有:
一个对应一切使用法式的接口
同时保护一个使用法式内有数的代码十分费事,由于每段代码都有本人的绝对途径、数据库链接、验证等等。而如许做就免去你在这方面的懊恼,答应你兼并偏重复利用代码
【为何要创立作者本人的MVC框架?】
迄今为止,我没有见到过太多用PHP写的MVC框架。现实上我仅仅晓得一个-Solar,是完整用PHP5写的。别的一个是Cake,一个试图成为PHP的RoR(Ruby on Rails-一个Ruby言语开源收集框架)。我本人对这两个框架都有一些不写意的中央:它们都没有益用到PEAR,Smarty等所包括的现有代码;如今的Cake还对照杂乱;最初,Solar是一个绝大局部由一团体写的作品(我有意说其作者Paul不是一个坏人或好法式员)。这些成绩能够其实不会让你否定它们,并且很有能够你基本不关怀这些成绩。然而正由于如斯,我请列位尽量地审阅它们。
【老体例】
假如回到2001看本人写的代码,作者有能够找到一个叫template.txt的文件,它看起来像如许:www.phpv.net 转载请注明出处
<?php
require_once('config.php'); // Other requires, DB info, etc.
$APP_DB = 'mydb';
$APP_REQUIRE_LOGIN = false; // Set to true if script requires login
$APP_TEMPLATE_FILE = 'foo.php'; // Smarty template
$APP_TITLE = 'My Application';
if ($APP_REQUIRE_LOGIN == true) {
if (!isset($_SESSION['userID'])) {
header("Location: /path/to/login.php");
exit();
}
}
$db = DB::connect('mysql://'.$DB_USER.':'.$DB_PASS.'@localhost/'.$APP_DB);
if (!PEAR::isError($db)) {
$db->setFetchMode(DB_FETCHMODE_ASSOC);
} else {
die($db->getMessage());
}
// Put your logic here
// Output the template
include_once(APP_TEMPLATE_PATH.'/header.php');
include_once(APP_TEMPLATE_PATH.'/'.$APP_TEMPLATE_FILE);
include_once(APP_TEMPLATE_PATH.'/footer.php');
?>
天哪,只是看这些代码城市让我有畏缩的愿望。这段代码的概念就是确保每个使用法式都能合用于这个处置办法,好比我可以复杂地将template.txt拷进myapp.php,改动一些变量,瞧,它就可以运转起来了。虽然如斯,这个组织周密的处置办法存在一些严重的弱点:
假如我的老板想让作者用myapp.php在一些情形下输入PDF、一些情形下输入HTML、一些情形下(直接提交的XML恳求)SOAP,我该怎样办?
假如这个使用法式需求IMAP或LDAP验证,我该怎样办?
我该若何处置各类分歧的代码(包含编纂、晋级和删除)?
我该若何处置多级验证(办理员 vs. 非办理员)?
我该若何启用输入缓存?www.phpv.net 转载请注明出处
【新体例】
将一切器材都扔进这个MVC框架,你会发明生涯是如斯复杂。请对照以下代码:
<?php
class myapp extends FR_Auth_User
{
public function __construct()
{
parent::__construct();
}
public function __default()
{
// Do something here
}
public function delete()
{ }
public function __destruct()
{
parent::__destruct();
}
}
?>
注重这段代码明显不是用来链接到一个数据库、判别一个用户是不是已上岸、或输入任何其他信息。掌握器把握了一切的一切。
假如我想验证LDAP,我可以创立FR_Auth_LDAP。掌握器可以辨认某些输入办法(好比$_GET['output'])并可以随时转换成PDF或SOAP。事务处置delete,只担任删除,其他的它都不论。由于这个模块具有一个FR_User类的实例,它可以复杂地判别一个用户是不是已上岸等等。Smarty,作为模板引擎掌握缓存是天经地义的,然而掌握器一样可以掌握一局部缓存。
夙昔面讲的老体例到MVC体例关于良多人来说多是一个全新、生疏的概念,然而一旦你转换到了如许一个概念,那末要转归去将是件相当坚苦的工作。
[1] [2] [3] [4] [5] 下一页
实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。 |
|