yafphp框架
学习资料
Yaf(Yet Another Framework)用户手册
http://www.laruence.com/manual/index.html
laruence/yaf
https://github.com/laruence/yaf
php yaf框架开发扩展实践
http://www.01happy.com/php-yaf-ext-preface/
http://www.php.net/manual/zh/book.yaf.php
特点
1、基于c语言开发;
2、以php扩展的形式安装(.so,.dll)
3、没有封装数据库操作的ORM
安装yaf扩展
扩展下载网址:http://pecl.php.net/package/yaf
windows请下载对应版本的php_yaf.dll,并复制到ext/ 目录。
其它版本请下载源码进行编译。
验证是否安装成功,使用phpinfo查看,如显示出yaf即成功:
或者在命令行使用php -m,若成功安装,可以看到yaf扩展。
参考源码里面的test进行搭建demo。
项目结构
─application 应用目录
│ ├─controllers 控制器目录
│ │ ├ Error.php
│ │ └ Index.php
│ ├─library 库目录
│ ├─models 模型目录
│ │ └ Sample.php
│ ├─plugins 插件目录
│ │ └ Sample.php
│ ├─views 视图目录
│ │ ├─error
│ │ └─index
│ └── Bootstrap.php
├─conf 配置文件目录
│ └─ application.ini 配置文件
├─public 静态文件目录
└── index.php 入口文件
入口文件
index.php
<?php
define("APP_PATH", dirname(__FILE__)); /*
$config = array(
"application" => array(
"directory" => APP_PATH . "/application",
),
); $app = new yaf_application($config);
*/
//加载配置文件
$app = new Yaf_Application(APP_PATH . "/conf/application.ini"); $app->bootstrap() //call bootstrap methods defined in Bootstrap.php
->run();
配置文件
conf/application.ini
[common]
; 支持直接写PHP中的已定义常量
application.directory = APP_PATH "/application"
application.dispatcher.catchException = TRUE
application.view.ext = html ; 数据库配置
resources.database.params.driver = "pdo_mysql"
resources.database.params.hostname = "127.0.0.1"
resources.database.params.port = 3306
resources.database.params.database = "database"
resources.database.params.username = "username"
resources.database.params.password = "password"
resources.database.params.charset = "UTF8"
resources.database.params.driver_options.1002 = "SET NAMES utf8" [product : common]
; 生产环境配置 [test : common]
; 测试环境配置 [develop : common]
; 开发环境配置 resources.database.params.hostname = "127.0.0.1"
resources.database.params.database = "database"
resources.database.params.username = "username"
resources.database.params.password = "password"
控制器
application/controllers
在Yaf中, 默认的模块/控制器/动作, 都是以Index命名的, 当然,这是可通过配置文件修改的。
对于默认模块, 控制器的目录是在application目录下的controllers目录下。
示例:application/controllers/Index.php
<?php
/**
* @name IndexController
* @author {&$AUTHOR&}
* @desc 默认控制器
* @see http://www.php.net/manual/en/class.yaf-controller-abstract.php
*/
class IndexController extends Yaf_Controller_Abstract { /**
* 默认动作
* Yaf支持直接把Yaf_Request_Abstract::getParam()得到的同名参数作为Action的形参
* 对于如下的例子, 当访问http://yourhost/{&$APP_NAME&}/index/index/index/name/{&$AUTHOR&} 的时候, 你就会发现不同
*/
public function indexAction($name = "Stranger") {
//1. fetch query
$get = $this->getRequest()->getQuery("get", "default value"); //2. fetch model
$model = new SampleModel(); //3. assign
$this->getView()->assign("content", $model->selectSample());
$this->getView()->assign("name", $name); //4. render by Yaf, 如果这里返回FALSE, Yaf将不会调用自动视图引擎Render模板
return TRUE;
} public function testAction() {
var_dump(YAF_VERSION );exit;
}
}
浏览器上访问:
http://localhost/demo/yaf/index.php/index
http://localhost/demo/yaf/index.php/index/test
视图文件
application/views
Yaf支持简单的视图引擎, 并且支持用户自定义自己的视图引擎, 比如Smarty。对于默认模块, 视图文件的路径是在application目录下的views目录中以小写的action名的目录中.
一个默认Action的视图application/views/index/index.html:
<?php
echo $content, " I am ", $name;
?>
模型
yaf/application/models
yaf没有封装数据库操作的ORM。这里是示例的一个简单模型,无实际意义,仅做展示。
示例:yaf/application/models/Sample.php
<?php
/**
* @name SampleModel
* @desc sample数据获取类, 可以访问数据库,文件,其它系统等
* @author {&$AUTHOR&}
*/
class SampleModel {
public function __construct() {
} public function selectSample() {
return 'Hello World!';
} public function insertSample($arrInfo) {
return true;
}
}
yaf框架封装类库
虽然yaf性能很快,但是缺少诸如表单、数据库操作等类库的封装,在开发上不免带来不便。可以自行集成第三方类库。
(http://git.oschina.net/iceup/yaf-ext)
参考
1、Yaf框架入门只hello yaf - 开源中国社区
http://www.oschina.net/code/snippet_2321543_466802、php yaf框架开发扩展实践——前言 - 快乐编程
http://www.01happy.com/php-yaf-ext-preface/
yafphp框架的更多相关文章
- yaf框架安装
第一步:明白yaf框架是以扩展的形式要先配置到php里面,对于windows系统的使用者,首先要去官网:http://code.google.com/p/yafphp/downloads/list如果 ...
- 避免重复造轮子的UI自动化测试框架开发
一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 旺财速啃H5框架之Bootstrap(五)
在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- 旺财速啃H5框架之Bootstrap(四)
上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
随机推荐
- diocp_tcp_client单元源码与注释
(* * Unit owner: d10.天地弦 * blog: http://www.cnblogs.com/dksoft * homePage: www.diocp.org * * 2015-02 ...
- sql left join、right join、inner join
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...
- java的四种取整方法
java 中取整操作提供了四种方法:分别是: public static double ceil(double a)//向上取整 public static double floor(double ...
- iOS button文字居中
新建一个UIButton的category .h @interface UIButton (QXTitleInCenter) -(instancetype)init; @end .m @impleme ...
- eclipse编码格式设置教程、如何为eclipse设置编码格式?
如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,EcliPSe工 作空间(workspace)的缺省字符编码是操作系统缺省的编码, ...
- Two Sum & Add Two Numbers
Two Sum 题目:https://leetcode.com/problems/two-sum/ class Solution(object): def twoSum(self, nums, tar ...
- Infobright存储引擎的特点
Infobright的优点: (1)高压缩比率 (2)快速响应复杂的分析查询语句 (3)随着数据库的逐渐增大,查询和装载性能基本保持稳定 (4)没有特殊的数据仓库模型(比如星状模型.雪花模型)要求 ( ...
- Win7中不能调试windows service
多年前玩过一次windows service,觉得挺简单的. 这次工作要维护产品中的windows service,发现不是那么简单,vs附加调试器的窗体中无法找到windows service进程. ...
- 记录一个多核CPU负载不均衡问题(动态绑定进程到指定cpu:taskset -pc $CPU $PID)
昨晚和一位读者朋友讨论了一个问题:在一台多核 CPU 的 Web 服务器上,存在负载不均衡问题,其中 CPU0 的负载明显高于其它 CPUx,进一步调查表明 PHP-FPM 的嫌疑很大.话说以前我曾经 ...
- 云计算和大数据时代网络技术揭秘(十二)自定义网络SDN
软件定义网络——SDN SDN是网络技术热点,即软件定义网络,OpenFlow是实现SDN思想的一个框架标准, open是指公开.开放,具体为控制平面的规则由各个通信厂家自定义变为公开的技术标准, f ...