FYSCU,让PHP更简单!

首先你得

1.首先你得有基本的php知识,知道php是做什么的,知道php的运行环境,知道mysql是做什么的,知道html/css的基本原理。好了,这就够了,剩下的实战时查文档就行了。

2.我希望你已经安装好一切运行环境,包含WEB服务器(apache or nginx),php运行环境(apache-mod or php-fpm),mysql数据库,以及你喜爱的浏览器。

3.从本站或开源中国下载框架源码,解压后部署到本地服务器。我期待你能通过 http://localhost/fyscu/ 来访问本页面。

第一个项目

1.浏览器打开 http://localhost/fyscu/,我很高兴你已经发现了快速创建项目的向导。(向导?)
fyscu

2.确保你的web目录下,没有同名的目录,否则你的新项目可能会创建不成功。

3.如果创建成功,fyscu会在你的web目录下创建新项目需要的文件。至此为止,你可以将你的工作转移到新的目录里去了 , 我们来看看目录结构:fyscu

4.简单说一下几个关键的目录:
action:你写代码的地方,里面放了所有resource的逻辑实现,我们在控制器章节详细介绍。
config:里面的 global.conf.php是项目的全局配置文件,以数组键值对来存放配置信息。
fyscu:无需多说,框架的核心文件,欢迎有基础的同学修改源码并提出宝贵意见。
tpl:模板目录,放置了展现层相关的htm、css、js、image以及编译后的 输出 结果。

控制器

1.URL路由
说控制器必须说URL路由,这是用户行为输入的依据,所谓的路由就是根据这个这个信息,决定调用哪个处理逻辑来给用户反馈。 所以,我们首先通过这个例子,了解一下路由信息

					
http://localhost/project_name/index.php/article/list/cid/3
路由信息 : /article/list/cid/3
模块(mod): article
行为(action) : list
参数(params) :[cid]=>3
通过上面路由,我们得到了三个关键信息,mod、action、params,框架会帮你自动收集这些信息。
它表达的行为是:调用article模块下的 list方法,传入的参数是cid=3,通俗点说就是把栏目编号为3的文章以列表方式展示出来
把它翻译成普通的url地址,就是 : http://localhost/project_name/index.php?mod=article&action=list&cid=3

2.如何实现模块 mod
接下来我们说说如何实现你的article模块
在项目的action目录里新建一个article.class.php (建议复制index.class.php,注意修改代码里的类名为article
每一个mod类都继承自 action_base,所以一个新的模块也具备以下特性:

$this->_args私有属性上面提及到的cid=3等参数会被存放到这里
$this->beforeAction()成员函数在执行具体action之前,会自动调用,有需要时请在子类里重载。。
$this->afterAction()成员函数在执行具体action之后,会自动调用,有需要时请在子类里重载。。
(你当前设备不方便观看,请到更大的设备上浏览。)

3.如何编写 action
action其实只是模块类的一个成员函数,为了能让框架根据路由信息顺利调用函数,必须遵守以下规则:
必须是公有public的;命名需要按照action_*格式,比如上面例子 的 action_list()。这样,你就能在函数里实现你的业务逻辑了。

					
例子:
public function action_list(){
//在这里实现你的逻辑
}

4.小结
控制器部分基本流程就是这样,想了解具体细节,可以看源码。下一节我们会讲解一下实现业务逻辑中 需要用到的功能组件。

操作数据库

1.配置文件
打开全局配置文件 /config/global.conf.php,在组件开关modules选项里将db设为1,这样打开了项目的数据库操作功能,这是大前提。
然后修改配置文件/core/component/db/db.conf.php,按照提示修改 dsn,username,password 等等 fyscu

2.数据库操作类
fyscu 提供了一个单例数据库操作类,支持多连接(在配置文件配置),由于是静态方法,全部都通过 FYDB:: 来调用
在开始列出函数文档之前,必须先介绍一个关键的东西,
查询选项 $option
FYDB通过这个选项,更方便地组织查询需要的设置,比如where 、order 、limit等等,更重要的是,这样可以让$option重用、灵活组合。
$option 是一个数组,下面的它支持的选项:

where查询条件例:'where'=>'id>=:i and cid=3' (注,推荐使用这样的占位符,配合下一条使用)
data占位符绑定的数据,一个数组例: 'data'=>array(':i'=>2) (注,这样上面的id就会赋予值2)
order排序依据例: 'order'=>'id desc'
limit区间与分页例: 'limit'=>'20' 'limit'=>'100,10'

find_all ( $table, $fields=array(), $option=array() ) : 返回一个集合数组
$table数据表名例 : 'article'
$fields数组形式的字段集合例: array('id','title','content')
$option查询的附加选项例: array('where'=>'id>1','limit'=>10)

find_clumn ( $table, $fields=array(), $option=array() ) : 返回一条查询结果
$table数据表名例 : 'article'
$fields数组形式的字段集合例: array('id','title','content')
$option查询的附加选项例: array('where'=>'id=1')

find_value ( $table, $field, $option=array() ) :返回查询的值
$table数据表名例 : 'article'
$field需要查询的字段或表达式例: 'title''count(id)'
$option查询的附加选项例: array('where'=>'id=1')

insert ( $table, $record=array() ) : 插入一条数据,返回最新自增ID
$table数据表名例 : 'article'
$record数组形式的字段=>值,字段名要和数据库一致例: array('title'=>'新文章','content'=>'hello fyscu')

update ( $table, $record=array(), $option=array() ) : 更新已有数据,返回影响行数
$table数据表名例 : 'article'
$record数组形式的字段=>值,字段名要和数据库一致例: array('title'=>'修改后的标题','content'=>'修改后的内容')
$option查询的附加选项例: array('where'=>'id=1')

delete ( $table, $option=array() ) : 删除已有数据,返回影响行数
$table数据表名例 : 'article'
$option查询的附加选项例: array('where'=>'id=1')
(你当前设备不方便观看,请到更大的设备上浏览。)

进阶玩法如 原生查询注册链接链接热切换操作文档会在近期补充

模板引擎

如何渲染页面
在你的 action 里,调用成员函数 $this->render($tpl,$data) 即可。

$tpl模板名,即tpl目录下的文件名(不含扩展名)例子:/tpl/index.htm 请填'index' ; /tpl/article/side.html 请填 'article/side'
$data一个数组,可以将业务里的数据传输给页面例子: array('t'=>$title,'ct'=>$content),这样页面上就能通过 { $t }、{ $ct }来输出内容
(你当前设备不方便观看,请到更大的设备上浏览。)
不过以上都不是重点,重点是在模板文件中用到的语法。
{$title}单纯地输出一个变量的值。
{loop $articles $k $v}***{/loop}遍历一个数组,用法相当于php的 foreach。
{if count($articles)>0}***{/if}判断语句,条件的写法兼容php写法。
{subtemplate common/header}子模板,路径请参考render的$tpl参数,你可以藉此切割你的页面,提取公共部分。
(你当前设备不方便观看,请到更大的设备上浏览。)

文件缓存

文件缓存允许你将输出的页面一组数据 存储到本地文件上,以提高系统的性能。

CACHE::set($key,$data)参数:$key 字符串,作为缓存文件的标识,$data 存放到缓存的数据,可以是一段文本或json
CACHE::get($key,$cache_time)参数:$key 字符串,作为缓存文件的标识,$key,$data可选参数,自定义本次的过期判断时间

以下是一个例子:
fyscu

实用工具

这是一个精通工具类,提供了些许常用的函数 ,通过 FYTOOL::来调用,下面是几个常用的

fyscu_info()打印当前框架的版本信息
get_gp_value($key,$method='request')$key:http参数名; $method:提交的方法返回指定的http参数
debug($arr)参数:任意变量格式化输出变量并中断脚本,调试利器。
cb_substr($string,$length,$dot='...',$charset='utf-8')字符串,长度,尾巴,字符集截取定长字符串,用给的尾巴结尾
FY_ip2long($ip)参数:IP地址字符串转换成长整型数,修复了原生ip2long溢出的BUG
(你当前设备不方便观看,请到更大的设备上浏览。)

其他

一些系统常量
FYSCU_ROOT:框架根目录,即fyscu.ini.php所在目录。
ACTION_PATH:业务逻辑类的存放目录,在项目入口文件定义。
PROJECT_ROOT:项目的根目录,即入口文件index.php所在目录。
__ENTRANCE__:入口文件的名字,一般为index.php,只在控制器内部用到过。
PROJECT_NAME:项目名字,创建项目是填的名字。

扩展阅读

1. windows下WAMP的安装:http://log.fyscu.com/index.php/archives/80/

我的企鹅:540590988

电子邮箱:admin@lanhao.name

个人主页:http://www.lanhao.name

代码仓库:https://github.com/captainblue2013

↑↑