Yaf框架在windows(10)下的安装教程

17-03-07 10:46 字数 1907 阅读 5760 已编辑

早就听说圈内大大牛鸟哥的yaf性能多么厉害,因为框架底层是用c写的,以php扩展的形式存在的mvc框架。一直想研究下,一直又没有时间。

直到最近因为工作要求需要使用yaf,所以研究了一下怎么在windows下安装。

下面说下安装的流程。

1,下载

首先确定你本地的环境,我本地的环境如下

windows版本:win10 位数: 64位 PHP版本:7.0.4(TS)

确定你的php版本是TS还是NTS,好选择对应的yaf版本。

怎么看我们的php是ts还是nts呢,直接查看phpinfo()

搜索[Thread Safety]看后面是enabled(ts)还是disabled(nts)

确定之后我们打开官网,yaf的官网地址:http://pecl.php.net/package/yaf

我选的是最新版3.0.4

因为是在windows安装,所以我们需要的是dll文件,点击后面的dll进入下载页面。

选择合适的版本下载,我选的是 7.0 Thread Safe (TS) x64 版本。

下载完成后我们解压zip压缩包,会看到几个文件,我们需要的是其中的php_yaf.dll

谁知道php_yaf.pdb是做什么用的

我们复制php_yaf.dll,然后粘贴到你本地php的扩展目录(ext)

因为我使用的是wamppserver,所以我本地php的拓展目录是 F:wamp64binphpphp7.0.4ext

直接把php_yaf.dll粘贴到这里

注意别放错了。以你的为准。

2,修改php.ini

上述步骤完成后,yaf的安装已经完成80%了,下面我们需要修改下php.ini文件。

在下边加一句extension = php_yaf.dll

加好之后,保存退出。然后重启apache。

然后再次查看phpinfo()

Crtl+F搜索看有没有yaf

如果看到上面的yaf模块,说明已经安装成功了。

3,输出Hello world

怎么输出hello,world呢?我们需要自动生成yaf项目目录的脚本。

+ public
  |- index.php //入口文件
  |- .htaccess //重写规则
  |+ css
  |+ img
  |+ js
+ conf
  |- application.ini //配置文件
+ application
  |+ controllers
     |- Index.php //默认控制器
  |+ views
     |+ index   //控制器
        |- index.phtml //默认视图
  |+ modules //其他模块
  |+ library //本地类库
  |+ models  //model目录
  |+ plugins //插件目录
*/
define("APP_PATH", realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
class app {

    // 创建项目目录结构
    public static function build_yaf_dir() {
        if(is_writeable(APP_PATH)) {
            $dirs  = array(
                APP_PATH . 'public',
                APP_PATH . 'public' . DIRECTORY_SEPARATOR . 'css',
                APP_PATH . 'public' . DIRECTORY_SEPARATOR . 'img',
                APP_PATH . 'public' . DIRECTORY_SEPARATOR . 'js',
                APP_PATH . 'conf',
                APP_PATH . 'application',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'controllers',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'views',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'index',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'modules',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'library',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'models',
                APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'plugins',
            );

            // 循环生成文件
            foreach ($dirs as $dir){
                if(!is_dir($dir))  mkdir($dir,0755,true);
            }

            // 写入入口文件public/index.php
            $content = <<<'EOT'
<?php  
define("APP_PATH",  realpath(dirname(__FILE__) . '/../')); /* 指向public的上一级 */  
$app  = new Yaf_Application(APP_PATH . "/conf/application.ini");  
$app->run();  
?>  
EOT;

            self::generateFile(APP_PATH . 'public' . DIRECTORY_SEPARATOR . 'index.php', $content);  

            // 写入重写规则  
            $content = <<<'EOT'
#.htaccess, 当然也可以写在httpd.conf  
RewriteEngine On  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule .* index.php  
EOT;

            self::generateFile(APP_PATH . 'public' . DIRECTORY_SEPARATOR . '.htaccess', $content);  

            // 写入配置文件  
            self::generateFile(APP_PATH . 'conf' . DIRECTORY_SEPARATOR . 'application.ini', "[product]n;支持直接写PHP中的已定义常量napplication.directory=APP_PATH "/application/"n");  

            // 写入默认控制器  
            $content = <<<'EOT'
<?php  
class IndexController extends Yaf_Controller_Abstract {  

    // 默认Action  
    public function indexAction() {  
        $this->getView()->assign("content", "Hello World");  
    }  
}  
?>  
EOT;

            self::generateFile(APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR . 'Index.php', $content);  

            // 写入默认Action的视图  
            $content = <<<'EOT'
<html>  
    <head>  
        <title>Hello World</title>  
    </head>  
    <body>  
        <?php echo $content;?>  
    </body>  
</html>  
EOT;

            self::generateFile(APP_PATH . 'application' . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'index' . DIRECTORY_SEPARATOR . 'index.phtml', $content);  
        }else{  
            header('Content-Type:text/html; charset=utf-8');  
            exit('项目目录不可写,目录无法自动生成!<BR>请使用项目生成器或者手动生成项目目录~');  
        }  
    }  

    // 生成文件  
    public static function generateFile($file, $content) {  
        if(!is_file($file)) {  
            file_put_contents($file, $content);  
        }  
    }  

}  
app::build_yaf_dir();

复制上面的代码,放到你项目的根目录下。注意删除定界符后多余的空格。

然后我们在浏览器里运行这个脚本。成功后可以看到如下的目录。

自动生成的项目目录

然后我们把目录切换到public目录下,回车。

yaf_sqd.com是我自己配置的虚拟域名

至此yaf的安装基本完成啦,看到hello world是不是很激动呢^v^

4,IDE的自动补全

此时如果你用的是phpstorm,你会发现代码中一片黄色的警告,因为我们的ide没有找到相关的类和方法。

对于强迫症来说这简直是难以忍受的,而且没有自动补全的话,开发效率上也低很多。

这个时候就需要这个东西 https://github.com/xudianyang/yaf.auto.complete,网友写的一个yaf ide自动补全的插件。(其实就是一堆没有函数体的类)

然后我们需要把这个东西放到我们ide中,以phpstorm为例。(我的phpstorm版本是2016v3)

依次找到File>Settings>Languages&Frameworks>PHP

点击右边的加号+选择刚才我们下载文件的路径,然后点Apply,确定退出。

这时再看代码就没有可恶的屎黄色了

至此yaf在windows下的安装就结束了。

0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 147.28万
私信