59. 用Yaf写一句hello

关于Yaf的一些说明一文中已经讲到了Yaf的一些额外信息,对于一个想了解这个框架的人来说,已经足够多了。

Yaf框架的前身是鸟哥在百度做PHP顾问时写的,在百度内部叫做AP框架,开源的版本称作Yaf框架。它们之间存在一些差异,但大部分都是相同的。可以说,有大牛经过的地方,都带着他们自己的影子,人走了,但东西都留下,方便了后来的人。

有时候觉得一些东西简单,很方便,比如Yii框架的gii,有时候又觉得什么都没有最好,比如Yaf,什么都自己写,更简单一些。全栈框架一方面确实快捷,但往往表面的东西占据了大多数功能。有种因为走的太远,可能忘记了自己是因为什么而出发的感觉。

所以介绍一下Yaf框架,对于以接口为主的应用来说,确实省掉了大量的扩展,即便是后台,也更简单,稍微维护就可以满足需求。

安装

安装很简单,现在的机器一般都很少使用源代码编译了,而是直接使用现成的包,比如mac上搜索一下:

zhgxun-pro:~ zhgxun$ brew search php71-yaf
==> Searching local taps...
homebrew/php/php71-yaf ✔
==> Searching taps on GitHub...
==> Searching blacklisted, migrated and deleted formulae...
zhgxun-pro:~ zhgxun$

当然线上服务器如果yum无法安装,那就考虑源代码编译吧,现如今编译一个软件,真的是一件很容易的事情了。

配置

比如使用nginx来做web服务器,直接配置应用入口即可:

zhgxun-pro:~ zhgxun$ cat /usr/local/etc/nginx/servers/yaf.conf
server {
    listen 80;
    server_name yaf.com;
    index index.php index.html;
    root  /Users/zhgxun/Public/html/php/yaf/public;

    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php/$1 last;
    }


    location ~ [^/]\.php(/|$) {
        fastcgi_pass  127.0.0.1:9000;
        include fastcgi.conf;
    }

    access_log  /Users/zhgxun/Public/html/logs/yaf.log  main;
}
zhgxun-pro:~ zhgxun$

服务器配置,一般只要公司不是很小,都有专门的运维同学负责,完全轮不到开发啥事。如果轮到了,那说明公司真的很小,你就简单配置一下,就可以支持公司业务了。放心,不要害怕,等公司业务做大了,不要害怕自己不会,会找到更厉害的人来管理的,你只需要做好自己该做的就行了。

目录

目录按照官网给定的即可,很多项目,都不要弄的很复杂,越简单越好。

zhgxun-pro:php zhgxun$ tree yaf/
yaf/
├── application
│   ├── controllers
│   │   └── Index.php
│   ├── library
│   ├── models
│   ├── modules
│   ├── plugins
│   └── views
│       └── index
│           └── index.html
├── conf
│   └── application.ini
└── public
    ├── css
    ├── img
    ├── index.php
    └── js

13 directories, 4 files
zhgxun-pro:php zhgxun$

配置

Yaf的配置不多,但也要注意一些默认值,可能需要你自己修改:

[product]
;支持直接写PHP中的已定义常量
application.directory=APP_PATH "/application/"
application.view.ext=html

默认配置已经很好了,但有些很奇怪的配置,可能每个人的适应不同,比如我就看不惯模板文件叫tpl,phtml这类的扩展名,不知道是因为什么,反正是每次看到都有种想要重命名的冲动。

入口

每个应用都有一个请求入口。

class IndexController extends Yaf_Controller_Abstract
{
    public function indexAction()
    {
        $this->getView()->assign("content", "Hello World");
    }
}

模板

简单的html标记语言是每个php开发者都需要掌握的知识。不过目前很少需要前后端都要写的情况了,如果有,说明你在的公司真的太小了,是时候需要考虑换一份工作,好好安心写php。

<html>
 <head>
   <title>Hello World</title>
 </head>
 <body>
  <?php echo $content;?>
 </body>
</html>

我写最多的时候也是后端,后端需要的js也很少,ajax就可以对付基本的业务。前端不一样,现在都要用vue来做了,jQuery做前端的网站不多了,后端同学不喜欢就不要去学了。知识太多,好好做后端就行。

重写

因为路由的关系,大多数应用都需要开启重写引擎。

#.htaccess, 当然也可以写在httpd.conf
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

好,Yaf框架就说这么多。