lovefc框架1.2下载以及介绍

好吧,其实也没有什么可介绍的,这是我在用模板写程序的时候,扩展出的一个框架
非要来点高大上的介绍?
好吧,音乐走起(装比模式开启)

lovefc框架是一个非常简单的框架,它的主要组成其实就几个类文件

另外我要说明的是,这个框架其实就是对lovefc模板的扩展,
核心文件就是lovefc.class.php

如果你厌烦了大型框架,如thinkphp

不妨使用它来开发一些项目吧


它的优点:

我一时不知从何说起

讲个最简单的吧

用过thinkphp的都知道

tp里面有个生成url的函数U函数

在模板中是这样使用的
{:U(index)}
实际上会编译成
<?php echo U('index');?>

每次都会执行一遍这个函数生成url


在lovefc框架中
生成地址的模板代码是
{(app::url(action=index))}
实际上会编译成
<?php echo app::url('action=index');?>

每次都会执行一遍这个函数生成url

???你TM在逗我?

这不是一样的吗?

确实是一样的

但谁让我有创意啊

实际上框架当中自带了一个生成地址的ubb


在模板中写
{([url(action=index)])}

没错,它跟{(app::url(action=index))}的效果是一样一样的


等等,既然都一样,这个功能有个卵用?简直浪费人的感情嘛。


好吧,其实一开始,我是拒绝的,是不要求加特技的

这个ubb的强大之处在于

它会直接在模板编译后的代码中生成url

而不会生成php代码了

是不是听晕了?

没关系,下面让你们更晕一点

在模板中写
{([url(action=index)])}
会直接编译成
./?action/index

不需要再执行php代码的时候
用app::url()这个函数去生成了


也就是省了一步

当然还有效率


模板中的链接最少也要有10个或者更多吧


如果按照常规的做法

就要执行十几遍app::url()函数

当用这个ubb后,也就不用执行了


它会一次性的将地址全都生成在编译文件中

当然这个生成地址的url是可以这样写的
{($app=1)}
{( [url(action=index&id= {($app)}) ] )}
实际上不要打空格的,我这是方便你们看,谁让我是好人昵?

这段模板代码你们可以自己写在模板代码中测试看看结果

以上就是我的全部讲话,如果大家有什么不懂的话,还可以问我,这次的养猪专业知识讲座到这里,还没结束昵


下面讲讲怎么在控制器和视图的结合使用,视图是啥?其实就是模板文件
lovefc框架中,工作目录里必须要定义了一个控制器的文件夹  controller
可能大家看demo工作目录的时候已经发现了controller目录下还有个demo子文件夹
里面还有两个类文件,一个叫做index_contro.class.php,一个叫做index_opera.class.php

这里是很重要的部分,不理解它,你也没办法使用这个框架了,请各位同学认真一点,必须要严肃一点,

所以先把脚从我脸上拿开可好?

大家打开工作目录里的配置文件
demo/config/config.php

会看到
//版本设置,键名为版本号,键值为版本的模板子目录名
'EDITION'=>array(
1=>'demo',
),

这是干什么用的昵?这是切换版本用的
EDITION这个数组里面的键名就是版本号
1=>demo
这个demo就是view/demo/
代表访问的模板文件目录

举个栗子给你看

访问
./?action=index&vs=1
其实就是访问
view/demo/index.tpl
这个模板文件

加入你把配置文件改成
'EDITION'=>array(
1=>'demo2',
),
那么
./?action=index&vs=1
就是访问
view/demo2/index.tpl

当然配置里还有一个
'VS'=>1,
//定义访问初始版本

这个就看你喜欢随便填了,当然必须要有这个版本号


这个功能适合我们做版本切换的,比如wap和web版本
你可以这样设置
'EDITION'=>array(
1=>'wap',2=>'web',
),

这样在view/wap放wap模板文件
在view/web放web模板文件




controller目录下还有个demo子文件夹,其实这个demo文件夹的名称和版本号里的应该是一样的
里面有两个类文件
index_contro.class.php,一个叫做index_opera.class.php

index_contro.class.php是读取数据,然后赋值到模板的类

里面的方法代表的就是模板文件的名称

就比如
<?php
class index_contro{

public function index(){
$head='登录页面';
return $head;
}

}
这就是定义index方法,这里注意了它返回的值会自动赋值到模板变量里。自动哦,,,这里是特效
在模板变量中,他们返回的值都用@index表示(这里一定要注意了)

如果返回的是一个数组,@index就是一个数组

这个方法定义好了

大家可以到

view/demo/index.tpl中输出一下这个值
直接在里面写模板代码
{(@index)}
然后访问运行一下就可以看到结果了


我写的demo示例里不是有个user方法吗?它就会把值传到view/demo/user.tpl里去





index_opera.class.php是干什么的?其实它是一个操作类,注意这里面的方法名你就可以随便定义了

对,想怎么定义就这么定义,它的访问url是./?d=方法名,当然前面也能加上模板名称的
就比如

./?action=模板名&d=要操作的方法名&vs=版本号

讲了这么多,感觉大家已经是很晕头转向了

我来举个简单的栗子(其实demo里也有个例子)

来,跟我左手右手一个慢动作

首先在
index_opera.class.php
定义一个方法名

<?php
class index_opera{

public function demo(){
$get=INPUT($_GET['id']);
//这个INPUT方法是框架自带的,就是自动转义变量,如果你传入的是$_GET,则会对这个数组里的所有值进行转义
return $get;//返回它,对,就这样,现在它就能在模板里使用了
}


}

然后我们在
view/demo目录下建立一个模板文件demo.html
里面写上模板代码,如下

测试结果:
{(if @app==1)}
id等于1
{(/if)}


然后保存


好了,下面就是见证奇迹的时刻了



访问 项目/?action=demo&d=demo&id=1

看看输出结果


访问 项目/?action=demo 在试试


综合以上结论,现在你们知道这个类可以干什么了吧.对,就是执行操作的,并且会把操作结果赋值给@app,然后在模板里使用

其实操作d方法后,在任何模板里都能取到它返回的值,关键在于你有没有@app这个值的输出和判断


下面做一下相关的延伸

假如我在
view/demo这个文件下又定义了一个文件夹

就比如
view/demo/admin
这个目录
下面也有好多模板文件

我该怎么访问这个目录下的模板的文件昵?


so easy!

访问的地址就是
./?文件夹名&action=模板名称

对,就是这样子的

就比如你要访问
view/demo/admin/index.tpl

输入这样的地址就行了

./?admin&action=index

当然了这里要注意的是
action默认的是index

你可以不带这个值的,完全可以滴

在子文件夹里也可以使用的控制器的

你就要在
controller/demo下新建一个读取类了

文件夹名_contor.class.php

这样就可以了

它的方法名返回的结果就赋值给了view/demo/文件夹名/模板文件名称 这个模板文件



好了,讲了这么多,口也渴了,容我先喝几碗热翔簌簌口

接下来讲啥昵,嗯,这位同学说的对,就是数据库操作。

loevfc框架的数据库操作是函数封装的

数据库的配置在demo/config/config.php这个文件里

'DB_HOST'=>'localhost',
//主机地址
'DB_NAME'=>'lovefc',
//数据库名
'DB_USER'=>'root',
//数据库用户名
'DB_PASS'=>'12345',
//数据库用户密码
'DB_AR'=>true,
//长链接
'DB_BM'=>'utf8',
//数据库编码
'DB_FILE'=>APP_PATH.'/config/shjkqnj78777777774.db',
//sqlite数据库存放路径,目录必须要存在
'DB_TYPE'=>'sqlite',
//数据库类型,用那种数据库就填那种数据库,一共就两种

这一大坨东西就是数据库配置了,目前框架就支持两种数据库mysql和sqlite

写程序当然要建表,你不用在导入,导出了

框架里弄了个自动安装

就在install文件夹了

你在里面写建表sql语句

一行分割一下就行了

不懂的看demo

里面有四个文件

mysql.php

这里面写的是mysql的建表语句

sqlite.php

这里面是sqlite的建表语句

drop.sql

安装前要删除的数据表,删除语句

insert.sql

添加数据的sql语句



这样全都写好了

打开任何页面的时候都会执行安装的

重新安装需要删除
install里面的index,html文件
实际上你可以打开
lovefc/core/install.calss.php这里面看看


安装页面弄好了,是不是挺傻瓜的?


下面我要读取一个数据了
$user=config::fetch('lovefc_user','where uid=?',array(1));
对,就是这样执行
有两个方法
config::fetch()
config::fetchall()

他们的参数都是一样的

唯一不同的是

fetch只会返回一条数据

fetchall返回所有查询的数据

使用如下

config::fetch('表名','查询的语句’,'预处理传入的数组','要读取的字段名,多个字段用,链接','要获取的数据类型')

简单实用
config::fetch('lovefc_user','where uid=1’)

config::fetch('lovefc_user','where uid=1’,null,'name')
注意了,这里还有个小惊喜,如果你只查询了一个字段,将直接返回它的值,不在是一个数组了,不知道你们有没有听懂


关联查询
config::fetchall('lovefc','LEFT JOIN lovefc2
ON lovefc.id = lovefc2.id where lovefc.status=?',array(2));

如果你使用预处理的话就要多加一个参数了,第三个值必须要是数组
不懂预处理的当我没说

config::fetch('lovefc_user','where uid=?’,array(1))


其他的数据库操作要简单一点

config::add('数据库表名’,'数组');
这个是添加数据的函数
只有两个参数
第二个参数必须是一个数组,键名为字段,键值为要写入的值
举个例子

$data=array('name'=>'封尘','pwd'=>'12345');
config::add('lovefc_user',$data);


config::dele(’数据库表名','查询语句')
这是删除操作,当然这是支持预处理操作的
config::dele(’lovefc_user','where id=?',array(1))


config::update($table,$data,$where)
* $table 表名
* $data 数组键名代表字段名,键值表示要更新的值
* $where代表更新的条件值
* 附加参数 可随意定义参数名,参数值为where中?指定的参数,此值应为一个数组

嗯,这就是更新操作了


当然还有更多,我没讲完,相信大家看了这么多,已经没啥耐心了



如果你觉得我这个比装的还可以,这个框架还能用,
不妨加qq群103214560

一起来研究讨论吧!

下载链接

http://pan.baidu.com/s/1bwiBuu



回复列表(10|隐藏机器人聊天)
  • @Ta / 2016-01-23 / /
    不错不错
  • @Ta / 2016-01-23 / /
       师傅,教我php处理js

    正在开启装逼模式 请稍后... ━━━━━━━━━━━━━ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉99.9% ━━━━━━━━━━━━━ 
    正在加载牛逼模式.............. 
    出现错误,系统已崩溃。 
    正在返回逗逼模式………… 
    逗逼模式已爆满 
    正在尝试连接2b模式 
    arte…arte…arte…arte…
     对不起,你已处于2b模式的黑名单,
    2b模式拒绝你的进入
     正在进入傻逼模式
     恭喜你进入成功!
  • @Ta / 2016-01-23 / /
    厉害👍~~
  • @Ta / 2016-01-24 / /
    我感觉就是java里的自定义类,和继承
  • @Ta / 2016-01-26 / /
    很牛逼的框架!
  • @Ta / 2016-05-07 / /
    @love封尘,框架没有了
  • @Ta / 2016-05-08 / /
    @ailwbh,最近在更新,1.3版本的很快就来了,不过我要写使用文档,要费时间
  • @Ta / 2016-05-08 / /
    支持下!膜拜大神
  • @Ta / 2016-05-08 / /
    支持你!
  • @Ta / 2017-11-02 / /
    @love封尘,文件没了
添加新回复
回复需要登录