博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yaf-example
阅读量:6093 次
发布时间:2019-06-20

本文共 4493 字,大约阅读时间需要 14 分钟。

是鸟哥用C语言编写的一个PHP框架,yaf文档地址:

其实很早之前就接触yaf了,但只是学习学习,没有深入的去了解和使用,但由于最近在重构一个项目,而重构所用到的框架就是yaf框架,正好趁此机会好好地使用了下yaf框架。本篇文章其实主要给一个yaf的例子,就是扩展了下yaf,因为yaf的东西本身就简单,所以快。鸟哥也给了两个例子,,一个是在yaf里使用Smarty的例子,还有一个是在yaf里加了DB和Log操作的包的例子。我给的yaf例子地址是:

配置

首先,你得安装yaf,文档里有, 。

安装完之后,编辑php.ini文件,配置yaf:

extension=yaf.soyaf.use_namespace=1 ;开启命名空间yaf.use_spl_autoload=1 ;开启自动加载

主要添加了:

  • 罗飞的

  • 一些常用函数

先编辑conf/application.ini文件

[common]application.directory = APP_PATH  "/application"application.view.ext = "html"application.view.engine = "twig";useruser.default_filter = 'trim,addslashes,htmlspecialchars'[product : common];twigtwig.cache = APP_PATH "/storage/twig/cache";databasedatabase.driver = 'mysql'database.read.host = '127.0.0.1'database.write.host = '127.0.0.1'database.port = '3306'database.database = 'test'database.username = 'root'database.password = '123456'database.charset = 'utf8'database.collation = 'utf8_unicode_ci'database.prefix = ''database.strict = false[develop : common]application.dispatcher.catchException = TRUE;twigtwig.debug = true;socketlogsocketlog.enable = truesocketlog.host = 'localhost'socketlog.optimize = truesocketlog.show_included_files = truesocketlog.error_handler = truesocketlog.force_client_ids = ''socketlog.allow_client_ids = 'slog_78de03';databasedatabase.driver = 'mysql'database.host = '127.0.0.1'database.port = '3306'database.database = 'test'database.username = 'root'database.password = '123456'database.charset = 'utf8'database.collation = 'utf8_unicode_ci'database.prefix = ''database.strict = false

database为MySql数据库的配置,socketlog为socketlog的配置,twig为twig模板引擎的配置

因为chen-yaf使用的是composer包,首先你得,然后在项目目录下建一个composer.json文件,内容如下:

{    "require": {        "php": ">=5.5.9",        "illuminate/database": "5.1.*",        "illuminate/events": "5.1.*",        "symfony/debug": "2.6.*",        "symfony/var-dumper": "2.6.*",        "twig/twig": "^1.26"    },      "autoload": {      "psr-4": {        "App\\Models\\": "application/models"      }    }}

然后记得

composer install

编辑Bootstrap.php文件

/** * 加载vendor下的文件 */public function _initLoader(){    \Yaf\Loader::import(APP_PATH . '/vendor/autoload.php');}/** * 配置 */public function _initConfig(){    $this->config = \Yaf\Application::app()->getConfig();//把配置保存起来    \Yaf\Registry::set('config', $this->config);}

Eloquent ORM

是Laravel框架里的ORM。

yaf里是没有数据库操作类的,可以自己写一个DAO层,或者直接使用第三方包,推荐和,chen-yaf里面是使用的。

编辑Bootstrap.php文件,添加_initDefaultDbAdapter方法

/** * 初始化数据库分发器 * @function _initDefaultDbAdapter * @author   jsyzchenchen@gmail.com */public function _initDefaultDbAdapter(){    //初始化 illuminate/database    $capsule = new \Illuminate\Database\Capsule\Manager;    $capsule->addConnection($this->config->database->toArray());    $capsule->setEventDispatcher(new \Illuminate\Events\Dispatcher(new \Illuminate\Container\Container));    $capsule->setAsGlobal();    //开启Eloquent ORM    $capsule->bootEloquent();    class_alias('\Illuminate\Database\Capsule\Manager', 'DB');}

然后在application/model下建一个Model基类,EloquentModel.php

然后所有的Model类都继承EloquentModel,这样就可以像在Laravel里操作数据库了,另外DB也是能使用的,和Laravel里的DB facade使用方法一样。文档: ,

twig

是Symfony框架里的模板引擎,当然它也可以单独使用。模板引擎也可以使用Smarty,如果你想拥有页面缓存的功能,请用Smarty。

编辑Bootstrap.php文件,添加_initTwig方法

/** * Twig View * @param \Yaf\Dispatcher $dispatcher */public function _initTwig(\Yaf\Dispatcher $dispatcher){    $twig = new \Twig\Adapter(APP_PATH . "/application/views/", $this->config->get("twig")->toArray());    $dispatcher->setView($twig);}

这样就可以在html文件里使用twig模板引擎了

SocketLog

SocketLog是ThinkPHP框架核心开发者“罗飞”开发的一个调试的工具,使用过ThinkPHP5框架的应该很熟悉。更多的介绍可以阅读我的另一篇文章:。

我把SocketLog相关的文件放在library/Common/Logger目录下了,当你安装完SocketLog并配置好,在Bootstrap.php添加_initLogger方法。

/** * 日志 * @param \Yaf\Dispatcher $dispatcher */public function _initLogger(\Yaf\Dispatcher $dispatcher){    //SocketLog    if (Yaf\ENVIRON === 'develop') {        if ($this->config->socketlog->enable) {            //载入            \Yaf\Loader::import('Common/Logger/slog.function.php');            //配置SocketLog            slog($this->config->socketlog->toArray(),'config');        }    }}

然后就可以在Chrome里调试你的代码了。

其他

引入了一些函数,放在library/Common/functions.php里了,都是一些常用的函数,如果你的项目中有其他的函数往里面加就行了。编辑Bootstrap.php,添加_initFunction方法。

/** * 公用函数载入 */public function _initFunction(){    \Yaf\Loader::import('Common/functions.php');}

总结

只是一个很简单的yaf例子,加了Eloquent ORM和twig。实际项目中,还需要不断地往里面添加东西。既然我们使用了composer包,那么我们在做自己的项目时就可以很方便的使用第三方包,避免我们重复造轮子。

推荐一些第三方包吧,也是我们在重构项目里所用到的。
1.:对于时间日期的操作。
2.:队列的操作。
3.:mongodb的操作。
4.:日志的操作。

为了更好的交流,可以加QQ群:415183844

码字不容易,转载请注明原地址,Jsyz Chen的博客: 谢谢!

你可能感兴趣的文章
ESS控制台发布新功能:创建多实例规格的伸缩配置
查看>>
互联网校招面试必备——计算机网络 | 掘金技术征文
查看>>
iOS中如何根据UIView获取所在的UIViewController
查看>>
聊聊spring cloud gateway的RouteLocator
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Android Annotation扫盲笔记
查看>>
React 整洁代码最佳实践
查看>>
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
iOS知识小集·设置userAgent的那件小事
查看>>
移动端架构的几点思考
查看>>
Tomcat与Spring中的事件机制详解
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
Rust官方公布Rust1.0最新状态报告和最终时间表
查看>>
使用PHPWord对Word文件做模板替换
查看>>
Dubbo Mesh在闲鱼生产环境的落地实践
查看>>
Windows Server 2008 \u0026 2012在GCE上正式商用了
查看>>
The Agile Mind-Set作者访谈
查看>>