回学校了一阵,许久没上论坛,在学校我也没闲着,今天发这个帖子就当这段时间的
工作总结,现在
框架的应用在企业级应用中极为普遍,在公司一直都使用框架开发,这里我就为广大初学框架开发的的朋友讲解下几种常用
开源框架的应用实例,高手请直接飘过。在学校这几天时间做的小程序,虽然小,但是有一定代表性,先讲下企业级应用的一般目录结构。
通常在网站根目录下有这样几个文件夹
lib
conf
moudle
images
csstemplates
templates_c
ib文件夹存放各种开发框架,我的目录下就有cmarty,xajax,fckeditor,quickform,dbclass,page这几个框架和类库,conf文件夹存放一些配置文件,moudle目录下每一个文件夹为一个功能模块,通常在根目录下还要有个文件定义网站的全局配置,我的这个文件取名为common.inc.php,这里提一下,通常公司都会有自己的编码规范,例如配置文件都是取名xxx.cfg.php,类文件xxx.class.php,包含文件xxx.inc.php,这样方便他人阅读和维护,大家正式做程序时最好要养成规范编码这个习惯。
好了,大家先建一个
数据库叫pro,导入以下内容:
CODE:
CREATE TABLE `admin` (
`adminname` varchar(100) NOT NULL,
`password` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- 导出表中的数据 `admin`
--
INSERT INTO `admin` (`adminname`, `password`) VALUES ('admin', 'admin');
-- --------------------------------------------------------
--
-- 表的结构 `content`
--
CREATE TABLE `content` (
`id` int(9) NOT NULL auto_increment,
`title` varchar(100) default NULL,
`content` text,
`add_time` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
--
-- 导出表中的数据 `content`
--
INSERT INTO `content` (`id`, `title`, `content`, `add_time`) VALUES (2, '哈哈哈', '<p>哈哈哈</p>', '2007-03-18'),
(9, '哈哈', '阿瑟', '2007-03-18'),
(11, '我是辉老大', '哈哈哈', '2007-03-18'),
(15, '辉辉', '哈哈哈', '2007-03-18'),
(16, '拉拉拉111', '小辉辉', '2007-03-18');功能很简单,假设他是某OA的一部分,所以初始页面pro/module/login/login.php是一个登录界面,判断采用xajax,大家最好在站点根目录下作个index.html,链接到module/login/login.php,这样访问会方便些处理login.php的页面叫login.code.php,这两个页面就用到了smarty,quickform,和xajax,贴出
代码大家看下,具体的大家可以下载源代码查看
[php]
<?php
/*
*作者:辉老大
*页面:login.php
*功能:登入
*/
$global['page']['name']='login';
$global['page']['folder']='login';
require_once('../../common.inc.php');//载入全局配置
//包含quickform类库
require($global['path']['lib'] . 'pear/HTML/QuickForm.php');
//包含xajax类库,并设置相应参数
$xajax = new xajax('login.code.php');//参数为处理xajax请求的页面
$xajax->registerFunction("app");
$form = new HTML_QuickForm('form1');//生成quickform实例,参数为表单名
/*
*开始添加表单元素
*参数依次为:表单元素类型,名称,(按钮标签文字),样式
*/
$form->addElement('text','username','','style="width:120px"');
$form->addElement('password','pwd','','style="width:120px"');
$form->addElement('submit','btnSubmit','登入','style="width:100px"');
//增加验证规则,自动生成JS
$form->addRule('username','用户名不能为空!','required','','client');
$form->addRule('pwd','密码不能为空!','required','','client');
$form->;//禁止提交表单,进行xajax处理
//分配表单数据到数组中
$tpl->assign('xajax_javascrīpt', $xajax->getJavascrīpt($global['path']['xajax']));
$tpl->assign('form_data',$form->toArray());
//显示模板
//var_dump($global['path']['lib']);
$tpl->display($global['page']['folder'].'/'.$global['page']['name'].'.tpl');
?>
[/php]
这里大家也许觉得为什么路径设成二维数组的形式,不设成常量,其实我个人喜欢常量,这是我公司的编码风格,这样其实也不错,很直观的表现它的路径。看下xajax处理的代码:
[php]
<?php
/*
*作者:辉老大
*页面:login.code.php
*功能:登录判断
*版权所有:随便copy^_^
*/
require('../../common.inc.php');//载入全局配置
$xajax = new xajax('login.code.php');
$xajax->registerFunction('app');
function app($formvalue){
$response = new xajaxResponse();
$db = new db;
//$db->createcon();//调用创建连接函数
$adminname = $formvalue['username'];
$pwd = $formvalue['pwd'];
$sql = 'select * from admin where adminname = \'' . $adminname . '\' and password = \'' . $pwd . '\'';
$rs = $db->query($sql);
$row = $db->loop_query($rs);
if ($row) {
$response->addAlert('登入成功!');
$response->addscrīpt('window.location = "../index.php"');
} else {
$response->addassign("message","innerHTML",'<font color=red>用户名或密码错误!</font>');
}
return $response;
}
$xajax->processRequests();
?>
[/php]
提一点,这些框架的使用,大家自己可以去了解下,这里肯定不能解释了。在看下fck使用的代码,其他大家自己看源码^_^
[php]
<?php
/*
*作者:辉老大
*页面:addinfo.php
*功能:登入
*/
$global['page']['name']='addInfo';
$global['page']['folder']='info';
require_once('../../common.inc.php');//载入全局配置
//定义一个函数用于调用FCK
function editor($input_name, $input_value)
{
global $tpl;
$editor = new FCKeditor($input_name) ;
$editor->BasePath = "../../lib/FCKeditor/";//指定编辑器路径
$editor->ToolbarSet = "Default";//编辑器工具栏有Basic(基本工具),Default(所有工具)选择
$editor->Width = "100%";
$editor->Height = "300";
$editor->Value = $input_value;
$editor->Config['AutoDetectLanguage'] = true ;
$editor->Config['DefaultLanguage'] = 'en' ;//语言
$FCKeditor = $editor->CreateHtml();
$tpl->assign("editor", $FCKeditor);//指定区域
}
//包含quickform类库
require($global['path']['lib'] . 'pear/HTML/QuickForm.php');
$form = new HTML_QuickForm('form1','post','addInfo.code.php');//生成quickform实例,参数为表单名
/*
*开始添加表单元素
*参数依次为:表单元素类型,名称,(按钮标签文字),样式
*/
$db = new db;
$rs = $db->query('select * from content where id = ' . $_GET['id'] . '');
$row = $db->loop_query($rs);
$title = '';
if($row){
editor("editor",$row['content']);
$title = $row['title'];
} else {
editor("editor","");
}
$form->setDefaults($row);
$form->addElement('text','title','','style="width:200px"');
$form->addElement('submit','btnSubmit','提交','style="width:60px"');
//$form->addElement('reset','btnReset','重置','style="width:60px"');
//增加验证规则,自动生成JS
$form->addRule('title','标题不能为空!','required','','client');
$tpl->assign('form_data',$form->toArray());
$tpl->assign('id',$_GET['id']);
//显示模板
//var_dump($global['path']['lib']);
$tpl->display($global['page']['folder'].'/'.$global['page']['name'].'.tpl');
?>
[/php]
也许大家有和我一样的感觉,企业级开发和自己平常做及教科书怎么差异这么大,是的,凡事都有个适应的过程只要大家打好基础就能很快适应企业开发的需要,成为优秀的
phper,此外一个细节提一下,关于文件编码最好用utf8,数据库输入用utf8输出也用utf8,全部都一致可以有效避免乱码问题。由于写的时间参促,虽然只是简单实例,难免有许多不足,欢迎大家提出意见,最后还是看下效果图:

{2921FBF9-8B9A-4C80-ABE5-48B8C704BBD6}.jpg

{4498ADB2-8D23-4202-B382-60F5FFD79D02}.jpg

{E1ADBECC-FB8B-427B-87C0-8800F10CCC6F}.jpg

11111.JPG

22222.JPG