冷月葬花魂 发表于 2015-2-4 00:13:29

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

第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),
            'email'   => htmlspecialchars($_POST),
            'url'      => htmlspecialchars($_POST),
            'content'    => nl2br(htmlspecialchars($_POST)),
      );   
      
      $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?></td>
                <td class="td1-style">邮箱:</td><td class="td2-style"><?=$gb?></td>
                <td class="td1-style">网站:</td><td class="td2-style"><?=$gb?></td>
            </tr>
            <tr>
                <td class="td1-style">留言:</td><td class="td3-style" colspan="5"><?=$gb?></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也分很多的区域,

再见西城 发表于 2015-2-9 23:02:50

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

乐观 发表于 2015-2-18 00:45:39

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

冷月葬花魂 发表于 2015-2-25 19:03:13

对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。

小妖女 发表于 2015-3-8 01:14:08

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

老尸 发表于 2015-3-8 12:43:45

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

蒙在股里 发表于 2015-3-13 09:53:34

做为1门年轻的语言,php一直很努力。

admin 发表于 2015-3-15 16:02:23

有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。

只想知道 发表于 2015-3-22 01:55:02

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

小魔女 发表于 2015-4-9 09:43:48

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

精灵巫婆 发表于 2015-4-23 03:55:24

写的比较杂,因为我也是个新手,不当至于大家多多指正。

愤怒的大鸟 发表于 2015-5-4 19:54:45

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

飘飘悠悠 发表于 2015-5-6 08:10:52

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

因胸联盟 发表于 2015-6-12 03:35:26

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

柔情似水 发表于 2015-6-18 05:06:58

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

仓酷云 发表于 2015-6-27 09:26:56

微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。

深爱那片海 发表于 2015-7-7 08:20:38

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
页: [1]
查看完整版本: PHP教程之利用FleaPHP框架构建复杂留言本使用