仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1368|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之利用FleaPHP框架构建复杂留言本使用

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:13:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
第1步环境配置好了,你算了进了1小步了,那么第2步呢 就是调出第1个程序 一般都是用hello world,视频教程里面我都做了,hello world架构   【FleaPHP引见】
FleaPHP是国产的一个MVC框架,今朝主流的框架Zend Framework、Symfony、CakePHP,国际还有FCS、Plite等框架都是值得等候的。
咱们看看官方的引见:
FleaPHP 为开辟者轻松、快捷的创立使用法式供应匡助。FleaPHP 框架复杂、明晰,轻易了解和进修,而且有完整中文明的文档和丰厚的示例法式下降进修本钱。利用 FleaPHP 框架开辟的使用法式可以主动顺应各类运转情况,并兼容 PHP4 和 PHP5。FleaPHP 的全名是 Fast-Lightweight-Extensible-Automatic PHP web application framework。

明天我复杂的利用FleaPHP来构建一个复杂的留言本法式来也许懂得以下FleaPHP的运作机制。关于FleaPHP的更多信息会见官方网站:www.fleaphp.org(电信)www.fleaphp.net (网通)。
FleaPHP开辟指南:http://www.fleaphp.net/index.php?q=guide


【构建留言本使用】
1. 数据表布局
留言本的请求对照复杂,就是可以留言、显示留言,这么复杂功效,看以下数据表布局:
--
-- 表的布局 `guestbook`
--
CREATE TABLE `guestbook` (
  `id` int(10) NOT NULL auto_increment,
  `nicker` varchar(50) NOT NULL default '',
  `email` varchar(100) default NULL,
  `url` varchar(100) default NULL,
  `content` text NOT NULL,
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;


2. 法式目次布局

全部留言本法式的布局是如许的:
/Fleaphp/                            ----根基框架目次
/Guestbook                        ----留言本根目次
/Guestbook/Config           ----设置装备摆设文件目次
/Guestbook/Model            ----模子层文件目次
/Guestbook/View              ----显示层文件目次
/Guestbook/Controller     ----掌握层文件目次

3. 设置装备摆设文件
我先构建设置装备摆设文件,用来保留数据库的根基设置装备摆设信息,设置装备摆设文件途径是: /Guestbook/Config/DSN.config.php

<?php
/**
* DSN
* 数据源设置装备摆设文件
*/
return array(
    'dbDSN' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'login'     => 'root',
        'password'  => '',
        'database'   => 'test'
    )
);
?>

4. 法式进口点(首页)
咱们再来构建首页,就是咱们一切使用的进口法式: /Guestbook/index.php

<?php
//======================================
// Name:     Gueskbook
// Desc:     first fleaphp application
//======================================
//包括文件
define("APP_DIR", dirname(__FILE__));
define("VIEW_DIR", APP_DIR ."/View/");
require_once("../FLEA/FLEA.php");
//载入DSN设置装备摆设文件
$dsnConfigFile = './Config/DSN.config.php';
register_app_inf($dsnConfigFile);
import(dirname(__FILE__));
//履行
run();
?>
大致咱们看就是设置装备摆设APP_DIR常量,然后加载根基的FleaPHP框架文件和数据源设置装备摆设信息,然后增添一个类搜刮目次,最初履行run() 来运转全部法式。
5. 掌握器(Controller)
如今来看看咱们的次要器材,掌握器(Controller): /Guestbook/Controller/Default.php

<?php
/**
* 缺省掌握器
*/
class Controller_Default extends FLEA_Controller_Action
{
    /**
     * 留言本Model
     */
    var $_modelGB;
   
    /**
     * 机关函数
     */
    function Controller_Default(){
        $this->_modelGB =& get_singleton("Model_GB");
    }
   
    /**
     * 缺省action
     */
    function actionIndex(){
        $posts = $this->_modelGB->findAll(null, 'created DESC');
        include("View/index.php");
    }
   
    /**
     * 拔出一条留言
     */
    function actionCreate(){
        $createArr = array(
            'nicker'    => htmlspecialchars($_POST[nicker]),
            'email'     => htmlspecialchars($_POST[email]),
            'url'        => htmlspecialchars($_POST[url]),
            'content'    => nl2br(htmlspecialchars($_POST[content])),
        );   
        
        $this->_modelGB->create($createArr);
        redirect($this->_url());
    }
}
?>
咱们的掌握器Controller_Default 是个缺省的掌握器,它从 FLEA_Controller_Action 类承继了一切的属性和办法用于本人的掌握。Controller_Default 类包括三个办法,机关函数是用来初始化一个Model类,actionIndex() 是缺省的举措办法,它从掌握器 Model_GB 里把一切的留言提掏出来,然后经由过程 View/index.php 文件来停止显示界面。actionCreate() 办法是创立一条留言的举措,就是机关好一个数据库,key是字段名,value是字段值的模式的数组,提交给 Model_GB 模子来停止处置,拔出到数据库傍边。
6. 模子层(Model)
咱们再来看看模子层(Model)都完成一些甚么代码:/Guestbook/Model/GB.php

<?php
//======================
//  GuestBook Model
//======================
load_class("FLEA_Db_TableDataGateway");
class Model_GB extends FLEA_Db_TableDataGateway
{
    /**
     * 数据表称号
     */
    var $tableName = 'guestbook';
   
    /**
     * 数据表主键
     */
    var $primaryKey = 'id';   
}
?>
咱们看,模子代码十分复杂,就是一个承继了 FLEA_Db_TableDataGateway 类的 Model_GB 类,而且没有任何办法代码,只要两个属性,一个 $tableName 纪录留言表的称号,$primaryKey 纪录内外面的主键字段。
7. 显示层(View)
最初看看你咱们用户可以检查到的显示层(View)的完成HTML: /Guestbook/View/index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<title>留言本</title>
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="stylesheet" href="view/resource/CSS/gb2.css">
<style>
*{
    margin:0;
    padding:0;
}
body{
    width:760px;
    height:100%;
    margin:10px auto 10px;
    font-size:12px;
}
#main{
    width:758px;   
    border:1px solid;
    background-color:#eee;  
}
#posts{
    height:200px;
    text-align:center;
    font-size:12px;
}
#posts input, #posts textarea{
    border:1px solid;
}
#posts h2{
    padding:10px;
    text-align:center;
    font-size:14px;
}
#content-list{
    text-align:center;
}
#content-list h2{
    margin-left:70px;
    padding:10px;
    text-align:left;
    font-size:14px;
}
.tbl-style{
    display:block;
    width:600px;
    background-color:#ccc;
    margin-bottom:10px;
    padding:0 5px 0 5px;
    border:1px solid green;
}
.td1-style{
    width:38px;
    text-align:left;
    line-height:20px;
}
.td2-style{
    width:100px;
    text-align:left;
    line-height:20px;
}
.td3-style{
    width:450px;
    text-align:left;
    padding:10px;
}
</style>
<script language="javascript">
function checkForm(){
    var o = document.getElementById("guestbook");
    if (o.nicker.value == ''){
        alert('必定要输出昵称哦。。。');
        o.nicker.focus();
        return false;
    }
    if (o.content.value == '' && o.content.value.length<10){
        alert('恩,留言内容总要输吧,我感觉起码不克不及要少于10个字,否则咋叫留言捏。。。');
        o.content.focus();
        return false;
    }
    return true;
}
</script>
</head>
<body>
<div id="main">
    <div id="posts">
        <h2>留言本</h2>
        <form action="<? echo $this->_url('create'); ?>" method="post" name="guestbook" id="guestbook" >
            昵称:<input type="text" size="15" name="nicker" id="nicker" />   
            邮箱:<input type="text" size="20" name="email" id="email" />   
            网站:<input type="text" size="20" name="url" id="url" /><br /><br />
            <textarea name="content" id="content" rows="10" cols="80"></textarea><br /><br />
            <input type="submit" value="即刻留言" />
        </form>
    </div>
    <div id="content-list">
        <h2>留言列表</h2>   
        <? foreach($posts as $gb){ ?>
        <table class="tbl-style">
            <tr>
                <td class="td1-style">昵称:</td><td class="td2-style"><?=$gb[nicker]?></td>
                <td class="td1-style">邮箱:</td><td class="td2-style"><?=$gb[email]?></td>
                <td class="td1-style">网站:</td><td class="td2-style"><?=$gb[url]?></td>
            </tr>
            <tr>
                <td class="td1-style">留言:</td><td class="td3-style" colspan="5"><?=$gb[content]?></td>
            </tr>
        </table>
        <? } ?>
        
    </div>
</div>
</body>
</html>
8. 完成后果图
总的布局就出来了,咱们看以下运转了局的图片:
图片地址:/XrssFile/2007-1/25/200712510335349.jpg
(不晓得为何CSDN不克不及传图片了,所以放到我百度空间里)
3、停止
更多使用请参考FleaPHP的官方网站和下载源码中的示例法式,本人亲身测验考试以下,或许,这个框架就是合适你的。

在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。
金色的骷髅 该用户已被删除
沙发
发表于 2015-2-4 08:54:10 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
活着的死人 该用户已被删除
板凳
发表于 2015-2-9 20:55:46 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
简单生活 该用户已被删除
地板
发表于 2015-2-9 22:26:51 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
再见西城 该用户已被删除
5#
发表于 2015-2-9 23:02:50 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
乐观 该用户已被删除
6#
发表于 2015-2-18 00:45:39 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
冷月葬花魂 该用户已被删除
7#
 楼主| 发表于 2015-2-25 19:03:13 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
小妖女 该用户已被删除
8#
发表于 2015-3-8 01:14:08 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
老尸 该用户已被删除
9#
发表于 2015-3-8 12:43:45 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
蒙在股里 该用户已被删除
10#
发表于 2015-3-13 09:53:34 | 只看该作者
做为1门年轻的语言,php一直很努力。
admin 该用户已被删除
11#
发表于 2015-3-15 16:02:23 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
只想知道 该用户已被删除
12#
发表于 2015-3-22 01:55:02 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
小魔女 该用户已被删除
13#
发表于 2015-4-9 09:43:48 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
精灵巫婆 该用户已被删除
14#
发表于 2015-4-23 03:55:24 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
愤怒的大鸟 该用户已被删除
15#
发表于 2015-5-4 19:54:45 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
飘飘悠悠 该用户已被删除
16#
发表于 2015-5-6 08:10:52 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
因胸联盟 该用户已被删除
17#
发表于 2015-6-12 03:35:26 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
柔情似水 该用户已被删除
18#
发表于 2015-6-18 05:06:58 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
19#
发表于 2015-6-27 09:26:56 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
深爱那片海 该用户已被删除
20#
发表于 2015-7-7 08:20:38 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 15:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表