yaf框架学习第一篇hello world

来源:互联网 发布:嗟乎,此真将军矣 编辑:程序博客网 时间:2024/05/17 04:21
yaf框架学习第一篇hello world
       传说有鸟哥的地方就有yaf框架的运用,此言非虚。进入公司也快一个月了,最近接触到的php业务都是使用鸟哥写的yaf框架完成的。本人之前没有接触过yaf框架,因为工作需要,准备好好研究一下yaf。
       首先介绍一下yaf框架吧!yaf并不同于于thinkPHP,yii2,laravel等框架。yaf框架是用c语言写的php扩展,对是php扩展。在使用yaf时,只需根据自己配置的php环境下载好对应的php_yaf.dll文件(下载地址:php_yaf.dll下载地址  php_yaf.dll的版本需要根据当地的php版本和是否支持线程安全相对应,NTS表示不支持),并且放到php的ext文件下,然后像配置其它php扩展一样在php.in文件中添加extension=php_yaf.dll 即可。然后yaf框架就部署好了,是不是与yii2这些框架完全不同,根本不需要下载php代码,对吧!  是的其实yaf框架就是一个php扩展。这是它与yii2这些完全的不同的地方,因为yii2是用php封装出来的框架,框架的实现是靠php代码,所以使用时需要下载yii2包,但是yaf是直接用c语言以扩展的形式封装的。很明显的是yaf在性能上会比其他框架高很多(php是用c写的一门语言,直接用c写框架的效率当然比再用php去封装框架要高得多。)。同时正是因为yaf只是一个扩展,所有它极其的原始,可以说并不像其他php框架那样,自身实现许多功能。
       选择yaf,就等于选择了web后台从无到有的过程。这说不定对初级的php程序员是个好事,毕竟像yii2这样框架代替我们已经做完太多的事情了,这样有事反而可能不利于我们的成长了。
       yaf虽然只有一个扩展,但是它也有一套自己的编码规则。在安装好yaf扩展后,我们开始用yaf 写一个hello world的吧!以此来熟悉yaf的 MVC架构运行流程吧!
       打开yaf官方文档可以仿照里面的教程写一个hello world
     第一步我们需要创建一个yaf默认的目录结构,目录结构如下图,这是yaf框架应用默认的目录结构。
  
       application目录是应用程序主要的存放目录,其下面分为controllers,views用来存放一般的控制器和视图文件,modules文件夹是模块文件夹,其下可以建立多个模块(模块下可以有controllers和views目录)。models目录是统一用来存放操作数据库文件的,无论是application下的controllers还是modules下的controllers调用的model文件都存放在这。library是自定义类库,就是支持自己在yaf基础进行一些自己的封装。plugins存放插件的目录。config目录用来存放配置文件。public目录是yaf默认唯一访问入口。
       在建好目录结构后,我们还需要向其中添加一些文件。
1.在public目录中添加.htaccess文件,限制唯一访问入口为public/index.php。文件内容如下:
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !(\.(ico|gif|jpg|png|bmp|swf|css|js))RewriteRule .* index.php
2.在public 目录中添加index.php文件,在访问时启动应用程序。文件内容如下(与官网内容略有不同):
<?phpuse Yaf\Application;use Yaf\Exception;define("APP_PATH",  realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */$app = new Application(APP_PATH . "/conf/application.ini");$app->run();

3.在config目录中添加配置文件application.ini 
[commen]application.directory=APP_PATH "/application/"
       
       application.directory 必须配置,在yaf官方文档中明确申明,其他可选项可根据实际情况添加,比如本人,第一次配置application.ini文件如下。
[commen]application.debug=1application.directory=APP_PATH "/application/"application.dispatcher.defaultModule="index"application.dispatcher.defaultController="index"application.dispatcher.defaultAction="index"application.dispatcher.throwException=1application.modules="index,learn,test"application.module.dir="modules"application.module.config="setting"application.view.ext="phtml"

4 在application下的controllers中添加文件Index.php注意控制器文件需要首字母大写。内容如下:
<?phpuse Yaf\Controller_Abstract ;//此处与官方文档不一致,之后有详细的解释。class IndexController extends Controller_Abstract {   public function indexAction()   {//默认Action       $this->getView()->assign("content", "Hello World");   }}

5 在application下的views中添加文件夹index与Index对应,在index文件下新建index.phtml ,   phtml后缀的文件表示php,html共存的一种文件,yaf中提倡页面文件使用这种格式的文件而不是html文件,当然使用html文件行,但是需要在application.ini中设置
application.view.ext="html"

index.phtml内容如下:
<html> <head>   <title>Hello World</title> </head> <body>  <?php echo $content;?> </body></html>

到此这个hello world 工程就完成了,基于本示例还有一步需要配置,就是在php.ini中配置如下内容
yaf.use_namespace=1
这句话,就是表示不使用Yaf_Controller_Abstract 这种下划线形式调用yaf内嵌的类,而是采用命名空间的方式如:Yaf\Controller_Abstract 去调用php内嵌的类。

         重启web服务器,就可以尝试访问了本人的 yaf目录名为learn 访问地址为localhost/learn/index/index     第一个index为控制器ID 第二个为动作 ID








0 0
原创粉丝点击