走过平凡人生、留下平凡足迹 注册 | 登陆
浏览模式: 标准 | 列表分类:FleaPHP

FileUploader类使用指南

要理解FileUploader,必须先了解php上传文件的一些基本常识。具体请参考php手册-- 38. 文件上传处理


FileUploader.php中包含2个类,分别为FLEA_Helper_FileUploaderFLEA_Helper_UploadFile

FLEA_Helper_FileUploader
FLEA_Helper_FileUploader类实现了一个简单的、可扩展的文件上传助手,我们一般处理上传文件都是从这个类继承或者获得实例。

成员变量:
_files
所有的 UploadFile 对象实例

_count

可用的上传文件对象数量


成员函数:
FLEA_Helper_FileUploader()

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

UsersManager类使用指南(RBAC)

类名:FLEA_Rbac_UsersManager
父类:FLEA_Db_TableDataGateway
版本:1.7.0

使用说明:用于访问保存用户信息的数据表,如果数据表的名字不同,应该从 FLEA_Rbac_UsersManager 派生类并使用自定义的数据表名字、主键字段名等。

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

ImgCode类使用指南

FLEA_Helper_ImgCode类实现了一个简单的图像验证码生成器,并带有检查验证方法。当启用了SESSION时,验证码会保存在SESSION中。

所属文件:FLEA/Helper/ImgCode.php


基本属性


$_code:私有属性,保存生成的验证码。

$_expired:私有属性,保存验证码过期时间。

$imagetype:验证码图片的类型(默认为 jpeg)。

$keepCode:指示是否在生成验证码图片时保留已有的验证码,默认为false,不保留。

说明:
    保留已有的验证码可以让用户在各个不同的页面都看到一致的验证码。
    只有这个验证码使用后,已有的验证码才会失效。


基本方法


FLEA_Helper_ImgCode()

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

Array类使用说明

首先有一点我们要知道在FLEA_Helper_Array中并不存在一个类。这也就是说,当我们载入FLEA_Helper_Array文件后,我们就可以直接使用里面的函数,无需声明什么实例之类的。

我们要使用FLEA_Helper_Array,第一步就载入它。但是,就像我前面说的那样,因为文件中并存在一个FLEA_Helper_Array 类,所以我们不能使用FLEA::loadClass()载入,应该使用FLEA::loadFile(“FLEA_Helper_Array”)来载入 文件。

因为FLEA_Helper_Array中的每一个函数都是独立的,所以我在这里就向大家一个一个的介绍。

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

Image类使用指南

FLEA_Helper_Image 类封装了针对图像的操作。开发者不能直接构造该类的实例,而是应该用 FLEA_Helper_Image::createFromFile()静态方法创建一个 FLEA_Helper_Image 类的实例。操作大图片时,请确保 php 能够分配足够的内存。

所属文件:FLEA/FLEA/Helper/Image.php

基本属性

$_handle:类私有属性,内部使用,用来保存图像资源句柄。


基本方法

FLEA_Helper_Image()

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

Pager类使用指南

FLEA_Helper_Pager类提供数据查询分页功能。FLEA_Helper_Pager使用很简单,只需要构造时传入FLEA_Db_TableDataGateway实例以及查询条件即可。

所属文件:FLEA/FLEA/Helper/Pager.php。

=========================================================================

基本属性:

$source:保存FLEA_Db_TableDataGateway对象|SQL查询语句。

**注意:
如果$this->source是一个FLEA_Db_TableDataGateway对象,则调用$this->source->findAll()来获取记录集。
如果$this->source是SQL查询语句,则通过$this->dbo->selectLimit()来获取记录集。

$dbo:保存数据库访问对象。

**注意:
当$this->source参数为SQL语句时,必须调用$this->setDBO()设置查询时要使用的数据库访问对象。

» 阅读全文

Tags: fleaphp, php, mysql, 框架, ajax

FleaPHP入门之DreamPig篇(六)

上次已经把我的例子基本上讲完了,今天来总结一下MVC的设计思路!整个的开发过程其实就是先建立一些Model操作,这里Model可以有两种方式,一 种就是一个直接的TDG的继承类(我的例子就是这样的),还有一种思想就是在Model层进行一些对数据库的操作,而在其之下再建立一个TDG的继承类 (shop示例就是这样的思路),但是在shop的例子里面Table里面的类都是封装了对数据库的操作,而在Model层也只是调用其封装了的函数。为 什么不直接在Model里面封装函数呢?问了老廖:分离业务逻辑和数据库操作
接着就是Controller了,控制器是我们整个项目中最重要的部分,他处理着我们的一些指令,所以我们应该在编写之前最好有一个详细的需求,这样就可 以知道需要那一些控制器,而控制器里面需要那一些action,每个action又会做出相应的动作。其实有些功能你后面也是可以一步一步增加的!这就是 框架的可扩展性。Controller里面我们必须熟悉几个函数
1._url($actionName = null, $args = null)
构造当前控制器的 url 地址,他集成现在的controller,在action的继承类中可以直接使用$this->_url("add","uname='DP'");
2._executeView($__flea_internal_viewName, $data = null)
执行指定的视图, 第一个参数是视图的名字(大多数时候是视图的文件名,例如对于 Smarty来说,就是模版文件名),第二个参数是要传递给视图的变量(必须是一个数组)
3. _forward($controllerName, $actionName)
转发请求到另一个控制器方法,第一个参数表示控制器的名称,第二个参数表示action的名称,例如出错了,我们就可以直接调用这个转发请求到一个错误控制自定义的控制器。
最后一个就是vIew了,view分为两种方式,一种就是使用模版技术,一种就是直接调用页面。我做的这个例子里面就是直接调用页面,廖大也是直接调用页 面,没有使用smarty或者自己内置的模版引擎。如何使用smarty例子里面有的,大家可以去看看,其实就是做了一个smarty的接口,其他工作都 是smarty自己在做。也许有人会问为什么不把所有的显示文件放在cwrj/app/view里面,这样的话MVC不是结构很明朗了嘛!我直接放在了外 面,这个主要是例子很简单,所以放在了最外面,而且所有的页面对于css和js调用比较方便,不用在替换什么的。
整个的框架大致就是这样。引用廖大的一句话:项目最简单的情况,所有事情都可以在控制器完成。当操作越来越复杂时,自然就把业务和数据操作迁移到model中了。如果还更复杂,则把业务逻辑和数据操作分离,model只处理业务逻辑,table处理数据操作。

Tags: fleaphp, php, mysql, 框架, ajax

FleaPHP入门之DreamPig篇(五)

昨天讲到了删除操作!今天继续啊!!
我先介绍一下编辑

复制内容到剪贴板
代码:
function actionEdit() {
    $jh = $this->_tbJh->find((int)$_GET['id']);
    require("input_edit.php");
}

第一行:通过数据库对象的find函数,这个函数传递进去的是一个$conditions参数,这个$conditions可以有很多中形式,
1.可以像我这样通过一个主键值来查询,返回符合条件的一条记录
2.可以是一个字符串:$conditions = "name = 'dreampig'";就是查询name是dreampig的记录,如果有两条记录,那么以数组方式返回符合条件的第一条记录及所有关联的数据。
3.可以是一个数组方式:$conditions = array("name <> 'dreampig'", "sno = '020497'");就等同于 name <> 'dreampig' AND sno = '020497'
当然查询还有其他几个函数:findByField(),里面的参数有$field, $value, $sort = null, $fields = '*',其实就是根据条件来查询,例如findByField('sno','020497'),其实就是和find("sno='020497'")是 一样的效果
第二行:就是调用编辑页面,对应的字段填值。

处理编辑的action代码如下所示:

复制内容到剪贴板
代码:
function actionEditPost(){
    $this->_tbJh->update($_POST);
    $this->_goBack();
}

第 一行:直接使用数据库对象的update函数进行更新我这是更新整个数据库字段,当然更新的时候在$_POST里面必须有主键这个值,不然会出现错误。所 以在编辑页面要加上一个hidden字段,不然会出现错误。更新函数还有updateByConditions(),updateField(),
第一个函数的参数是$conditions, $row, $checkCommend = false 所以其实就是根据$conditions来进行更新函数,$row就是传进来要修改的值,这个函数就不一定要求在$row里面有主键值了。
如下代码所示

复制内容到剪贴板
代码:
$row=array(
    "depart='cise'",
    "score='95'"
)
$conditions="sno='020497'";
$this->_tbJh->updateByConditions($conditions,$row),

上面的代码表示update 表 set depart='cise',score='95' where sno='020497'
第二个函数表示的参数是$conditions, $field, $value,其实就是updateByConditions()的细化版本,每次只能更新一个字段,
$conditions和上面的一样的意思,$field表示一个字段名称,$value表示要把改字段更新后的字段值。

最后再来讲讲excel的导出。

复制内容到剪贴板
代码:
function actionExpot(){
    require("input_expot.php");
}

导出页面引入,在这个页面里面其实就是选择时间,然后在在处理页面里面查询出来然后导出数据

复制内容到剪贴板
代码:
function actionExpotPost(){
    $y=$_POST["year"];
    $m=$_POST["month"];
    if (strlen($m)<2) {
        $m="0".$m;
    }
    $sdt=$y."-".$m."-01";
    $edt=$y."-".$m."-31";
    $condition=array("`kprq` >= '$sdt'","`kprq` <= '$edt'");
    $rowset = $this->_tbJh->findAll($condition);
    header('Content-type:application/x-msexcel');
    $str="Content-Disposition:filename=\"".$y."年".$m."月进货表.xls\"";
    header($str);
    echo "XX公司".$y."年".$m."月进项表\n";
    echo "序号\t开票日期\t名称\t销售单位\t数量\t单价\t总额\t税率\t税额\t价税总计\n";
    $i=1;
    foreach($rowset as $row){
        echo $i."\t";
        echo $row["kprq"]."\t";
        echo $row["name"]."\t";
        echo $row["dw"]."\t";
        echo $row["sl"]."\t";
        echo $row["dj"]."\t";
        echo $row["zj"]."\t";
        $this->zj+=$row["zj"];
        echo "%17\t";
        echo $row["se"]."\t";
        $this->se+=$row["se"];
        echo $row["total"]."\t";
        echo "\n";
        $this->total+=$row["total"];
        $i++;
    }
    echo "\n\n\n";

    echo "\t".$m."月小计\t发票".($i-1)."张\t\t\t\t".$this->zj.
    "\t\t".$this->se."\t".$this->total."\t\n";
}

首 先我是处理一下传递过来的年月,使得和数据里面的date格式一致。然后使用findall函数查询所有的数据记录,findall有四个参数:$ conditions = null, $sort = null, $limit = null, $fields = '*' 我们可以根据自己的要求选择出来
我上面的例子已经说明了怎么应用了。含有一个findAllByField()的函数,他也可以查询所有记录,其实就是findall的简化版本,他的参 数是$field, $value, $sort = null, $limit = null, $fields = '*',其实就是把前面两个参数组合成一个条件,然后调用findall函数$conditions="$field='$value'"

Tags: fleaphp, php, mysql, 框架, ajax

Records:20123