PHP的扩展框架之Phalcon初探

转载:http://www.lunzz.net/archives/69.shtml

之前了解的第一个用C编写的php框架就是鸟哥的YAF,也学习了下感觉入手不是那么简单。最近无意中发现了Phalcon的框架,也是用C写的扩展框架。之前学习的YAF只实现了MVC,但是没有其他过多的东西可用有些蛋疼,连数据库操作封装都没有。而Phalcon则是一个非常完整的框架,已经能达到应用目的。

一、安装

windos下下载跟你自己php版本对应的dll扩展,然后放到php的ext目录,并修改php.ini添加extension=php_phalcon.dll加载扩展。

二、配置

接下来,开启apache的重写以及配置虚拟机(具体方法略)。然后编写.htaccess重写规则文件。

这是web目录结构

app
    controllers
    models
    views
public
    css
    js
    img

官方文档是根目录放置一个.htaccess

#/.htaccess 

 RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]

另外public目录

#/public/.htaccess 

 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

这个配置好重启服务器。

三、创建项目

// public/index.php 入口文件

<?php try { //Register an autoloader $loader = new \Phalcon\Loader(); $loader->registerDirs(array( '../app/controllers/', '../app/models/' ))->register(); //Create a DI $di = new \Phalcon\DI\FactoryDefault(); //Setting up the view component $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('../app/views/'); return $view; }); //Handle the request $application = new \Phalcon\Mvc\Application(); $application->setDI($di); echo $application->handle()->getContent(); } catch(PhalconException $e) { ech


// app/controllers/IndexController.php 控制器

class IndexController extends \Phalcon\Mvc\Controller { public function indexAction() { echo 'hello'; } }


好了,现在用浏览器访问下吧!

四、其他补充

前面说这是官方做法,而我要做的就是入口文件放在根目录,另外我用的nginx+phalcon。

所以首先配置nginx并添加重写规则

server {
    listen       80;
    server_name  www.phalcon.com;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
     root   "H:/WWW/phalcon";
    location / {
        index  index.html index.htm index.php;
        autoindex  on;
        #重写
        if (!-e $request_filename){
          rewrite ^/(.*)$ /index.php?_url=/$1;
        }
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    location ~ .php(.*)$  {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }
}

重启服务器。

编写入口文件index.php

<?php $loader = new \Phalcon\Loader(); $loader->registerDirs(array( './app/controllers/', './app/models/' ))->register(); //Create a DI $di =new \Phalcon\DI\FactoryDefault(); $di->set('db', function(){ return new \Phalcon\Db\Adapter\Pdo\Mysql(array( "host" => "localhost", "username" => "root", "password" => "root", "dbname" => "test" )); }); //Setting up the view component $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('./app/views/'); return $view; }); //Handle the request $application = new \Phalcon\Mvc\Application($di); // $application->setDI(); echo $application->handle()->getContent();


我这里比上面的入口多了数据库连接配置,因为后面有例子要实现数据库操作。到这步其实已经可以访问了,但是会报错因为还没有控制器。

接下来实现注册功能。

app/views/index/index.phtml

<meta charset="utf-8"> <?php use \Phalcon\Tag; ?> <h2>欢迎注册!</h2> <?php echo Tag::form("reg/register"); ?> <p> <label for="name">Name</label> <?php echo Tag::textField("name") ?> </p> <p> <label for="name">E-Mail</label> <?php echo Tag::textField("email") ?> </p> <p> <?php echo Tag::submitButton("Register") ?> </p> </form>


这里用到了phalcon的form标签,要跳转到RegController/register注册,标签学习中。。。

现在是注册控制器app/controllers/RegController.php

<?php class SigupController extends \Phalcon\Mvc\Controller{ function indexAction(){ // } function registerAction(){ $name = $this->request->getPost("name", "string"); $email = $this->request->getPost("email", "email"); $user = new Users(); $user->name = $name; $user->email = $email; $flag = $user->save(); print_r($flag); } } ?>


这里new users()是实例化一个模型,也就是数据表,所以我们要在app/models中创建这个模型。

app/models/Users.php

<?php class Users extends Phalcon\Mvc\Model{ // }


这样一个简单的注册功能就OK了!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值