php yaf 教程,yaf 入门

一、了解

·yaf是php框架中性能最好的框架,因为它是用c语言以扩展方式实现的,其框架类、配置常驻内存。

·相较原生php的类,经过ab测试,性能损失仅约10%。

·支持自定义视图解析、路由,且拥有高性能的视图解析器,多种路由。

·优点是足够快,缺点是,不能使用在部分php扩展不能自定义的服务器/虚拟主机上。

二、使用准备:

1、要求:

·php版本:5.2+

·启用spl、pcre扩展

2、Linux下安装:

·下载框架并解压,进入框架目录,执行:/php-bin-path../phpize

./configure --with-php-config=/php-bin-path../php-config

make

make install

·在php.ini扩展部分加入:yaf.so

·重启php-fpm,或者服务器(取决于php运行方式)

3、Windows下安装:

直接下载yaf.dll到php\ext扩展库目录下并在配置文件中启用(需php5.3+)。

二、快速开始:

1、项目目录规范:(+指目录 -指文件:)

+ public

- index.php //入口文件

- .htaccess //重写规则

+ css

+ img

+ js

+ conf

- application.ini //配置文件

+ application

+ controllers

- Index.php //默认控制器

+ views

+ index   //控制器

- index.phtml //默认视图

+ modules //其他模块

+ library //本地类库

+ models  //model目录

+ plugins //插件目录

2、使用 webserver 各自的 rewrite 方式将请求定位到 public/index.php

3、编写php文件:

·入口文件:public/index.php:

define("APP_PATH",  realpath(dirname(__FILE__) . ‘/../‘)); /* 指向public的上一级 */

$app  = new Yaf_Application(APP_PATH . "/conf/application.ini");

$app->run();

·配置文件:application/conf/application.ini[product]

;支持直接写PHP中的已定义常量

application.directory=APP_PATH "/application/"

·控制文件:application/controllers/Index.php 遵循控制器名:[Name]Controller,方法名:[Name]Action<?php

class IndexController extends Yaf_Controller_Abstract {

public function indexAction() {//默认Action

$this->getView()->assign("content", "Hello World");

}

}

?>

·视图文件:application/views/index/index.phtml

Hello World

4、浏览器访问:

http://www.yourhostname.com/application/index.php

5、更简单的方法是,使用命令自动生成项目文件,方法:

·执行:yaf目录/tools/cg/yaf_cg [项目名称]

·访问:http://www.yourhostname.com/sample/

三、高级:

1、自动加载:项目仅加载规范目录下的文件,即Controller中找XxxController,Model、Plugin目录中找XxxModel、XxxPlugin

2、自定义加载:

如果你有多个项目,那么所有应用中都用到的类,可以在php.ini中,使用ap.library声明类目录

如果只某项目中用到的,则在该项目自己的配置文件中,使用ap.librafy声明类目录

这两种自动加载机制的相关类加载机制,遵循 Foo_Bar_Name 文件,在 $ap.library/Foo/Bar 下查找 Name。

3、bootstrap:也叫做引导程序. 它是Yaf提供的一个全局配置的入口, 可以做很多全局自定义的工作:使用:

4、插件:Yaf支持用户定义插件来扩展Yaf的功能, 这些插件都是一些类. 它们都必须继承自Yaf_Plugin_Abstract,使用:

5、路由使用:

6、命令行中使用yaf:http://www.laruence.com/manual/yaf.incli.html

7、异常定义:http://www.laruence.com/manual/yaf.catcherror.html

8、内建类:http://www.laruence.com/manual/yaf.classes.html

四、应用参考:

配置参考:红色为必选

名称值类型默认值说明application.directoryString应用的目录路径(绝对路径)

application.extStringphpPHP脚本的扩展名

application.bootstrapStringBootstrapplication.phpBootstrap路径(绝对路径)

application.libraryStringapplication.directory + "/library"本地(自身)类库的绝对目录地址

application.baseUriStringNULL在路由中, 需要忽略的路径前缀, 一般不需要设置, Yaf会自动判断.

application.dispatcher.defaultModuleStringindex默认的模块

application.dispatcher.throwExceptionBoolTrue在出错的时候, 是否抛出异常

application.dispatcher.catchExceptionBoolFalse是否使用默认的异常捕获Controller, 如果开启, 在有未捕获的异常的时候, 控制权会交给ErrorController的errorAction方法, 可以通过$request->getException()获得此异常对象

application.dispatcher.defaultControllerStringindex默认的控制器

application.dispatcher.defaultActionStringindex默认的动作

application.view.extStringphtml视图模板扩展名

application.modulesStringIndex声明存在的模块名, 请注意, 如果你要定义这个值, 一定要定义Index Module

application.system.*String*通过这个属性, 可以修改yaf的runtime configure, 比如application.system.lowcase_path, 但是请注意只有PHP_INI_ALL的配置项才可以在这里被修改, 此选项从2.2.0开始引入

系统配置:选项名称默认值可修改范围更新记录yaf.environproductPHP_INI_ALL环境名称, 当用INI作为Yaf的配置文件时, 这个指明了Yaf将要在INI配置中读取的节的名字

yaf.libraryNULLPHP_INI_ALL全局类库的目录路径

yaf.cache_config0PHP_INI_SYSTEM是否缓存配置文件(只针对INI配置文件生效), 打开此选项可在复杂配置的情况下提高性能

yaf.name_suffix1PHP_INI_ALL在处理Controller, Action, Plugin, Model的时候, 类名中关键信息是否是后缀式, 比如UserModel, 而在前缀模式下则是ModelUser

yaf.name_separator""PHP_INI_ALL在处理Controller, Action, Plugin, Model的时候, 前缀和名字之间的分隔符, 默认为空, 也就是UserPlugin, 加入设置为"_", 则判断的依据就会变成:"User_Plugin", 这个主要是为了兼容ST已有的命名规范

yaf.forward_limit5PHP_INI_ALLforward最大嵌套深度

yaf.use_namespace0PHP_INI_SYSTEM开启的情况下, Yaf将会使用命名空间方式注册自己的类, 比如Yaf_Application将会变成Yaf\Application

yaf.use_spl_autoload0PHP_INI_ALL开启的情况下, Yaf在加载不成功的情况下, 会继续让PHP的自动加载函数加载, 从性能考虑, 除非特殊情况, 否则保持这个选项关闭

常量参考:常量(启用命名空间后的常量名)说明YAF_VERSION(Yaf\VERSION)Yaf框架的三位版本信息

YAF_ENVIRON(Yaf\ENVIRONYaf的环境常量, 指明了要读取的配置的节, 默认的是product

YAF_ERR_STARTUP_FAILED(Yaf\ERR\STARTUP_FAILED)Yaf的错误代码常量, 表示启动失败, 值为512

YAF_ERR_ROUTE_FAILED(Yaf\ERR\ROUTE_FAILED)Yaf的错误代码常量, 表示路由失败, 值为513

YAF_ERR_DISPATCH_FAILED(Yaf\ERR\DISPATCH_FAILED)Yaf的错误代码常量, 表示分发失败, 值为514

YAF_ERR_NOTFOUND_MODULE(Yaf\ERR\NOTFOUD\MODULE)Yaf的错误代码常量, 表示找不到指定的模块, 值为515

YAF_ERR_NOTFOUND_CONTROLLER(Yaf\ERR\NOTFOUD\CONTROLLER)Yaf的错误代码常量, 表示找不到指定的Controller, 值为516

YAF_ERR_NOTFOUND_ACTION(Yaf\ERR\NOTFOUD\ACTION)Yaf的错误代码常量, 表示找不到指定的Action, 值为517

YAF_ERR_NOTFOUND_VIEW(Yaf\ERR\NOTFOUD\VIEW)Yaf的错误代码常量, 表示找不到指定的视图文件, 值为518

YAF_ERR_CALL_FAILED(Yaf\ERR\CALL_FAILED)Yaf的错误代码常量, 表示调用失败, 值为519

YAF_ERR_AUTOLOAD_FAILED(Yaf\ERR\AUTOLOAD_FAILED)Yaf的错误代码常量, 表示自动加载类失败, 值为520

YAF_ERR_TYPE_ERROR(Yaf\ERR\TYPE_ERROR)Yaf的错误代码常量, 表示关键逻辑的参数错误, 值为521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值