`

php phalcon项目实战

阅读更多

Phalcon是一套实现MVC架构的高性能PHP应用程序框架。初始版本发布于2012年11月,开放源代码并基于BSD授权条款。与其他大部分的PHP框架不同,Phalcon是以扩充的方式以C语言所编写,因此Phalcon的执行速度高过其他PHP框架,并且消耗更少的资源,根据官方的测试,Phalcon是目前世界上速度最快的PHP框架之一。

最近使用phalcon和之前的模板进行搭建了简单的项目,下面一起分享下该框架是怎样搭建项目:

该项目中是一个多模板项目:phalcon中session,db,第三方类库扩展,验证码,分页等都涉及到,请参阅代码。

1,首先我们需要详细了解阅读phalcon提供的api文档,目前使用的phalcon版本是1.3

2,我们搭建的该项目(该项目是多模块)中public/index.php是非常重要的引导文件(入口),由于phalcon是c开发的一个框架,我们是需要注册各种组件,调用其框架的所需接口,常见的如session,db,router,url等等

如下,这是我在项目中使用的index.php:

<?php

 

use Phalcon\Mvc\Application;

 

error_reporting(E_ALL);

ini_set('date.timezone','Asia/Shanghai');

try {

$loader = new \Phalcon\Loader();

 

$loader->registerNamespaces(array(

"Phalcon_wifi\Common\Models" => "../apps/Common/models",

"Phalcon_wifi\Common\Controllers" => "../apps/Common/controllers",

"Phalcon_wifi\Common\Config" => "../apps/Common/config",

"Phalcon_wifi\Common\Ext" => "../apps/Common/ext",

));

 

$loader->register();

 

$di = new \Phalcon\DI\FactoryDefault();

 

$di["router"] = function () {

$router = new \Phalcon\Mvc\Router();

$router->setDefaultModule("Admin");

$router->setDefaultNamespace("Phalcon_wifi\Admin\Controllers");

$router->add('/:controller/:action/:params', array(

'module' => 'Admin',

'controller' => 1,

'action' => 2,

'params' => 3

))->setName("common");

 

return $router;

};

 

$di["url"] = function () use ($di) {

$url = new \Phalcon\Mvc\Url();

$url->setBaseUri($di->get("config")->get("common")["baseuri"]);

return $url;

};

 

$di["session"] = function () {

$session = new \Phalcon\Session\Adapter\Files();

$session->start();

return $session;

};

 

$di["db"] = function () use($di) {

$config = $di->get("config")->get("common")["db"];

$connection = new \Phalcon\Db\Adapter\Pdo\Mysql(array(

"host" => $config["host"],

"username" => $config["username"],

"password" => $config["password"],

"dbname" => $config["dbname"],

"charset" => $config["charset"]

));

$eventsManager = new \Phalcon\Events\Manager();

$dblog = $di->get("config")->get("common")["dblog"];

$logger = new \Phalcon\Logger\Adapter\File(__DIR__ . $dblog);

$eventsManager->attach('db:beforeQuery', function($event, $connection) use ($logger) {

$sqlVariables = $connection->getSQLVariables();

if (count($sqlVariables)) {

$logger->log($connection->getSQLStatement() . ' ' . join(', ', $sqlVariables), \Phalcon\Logger::INFO);

} else {

$logger->log($connection->getSQLStatement(), \Phalcon\Logger::INFO);

}

});

$connection->setEventsManager($eventsManager);

return $connection;

};

 

$di["dbBackupTool"] = function () use($di) {

$config = $di->get("config")->get("common")["db"];

return new \Phalcon_wifi\Common\Ext\DBManager($config["username"], $config["password"], $config["host"], $config["dbname"]);

};

 

$di["validateCodeCreator"] = function () use($di) {

return new \Phalcon_wifi\Common\Ext\ValidateCode($di->get('session'));

};

 

$di["config"] = function () {

$config = new \Phalcon_wifi\Common\Config\Config;

return $config->config;

};

 

$di->set('modelsManager', function() {

return new Phalcon\Mvc\Model\Manager();

});

 

$application = new Application($di);

$application->registerModules(array(

"Admin" => array(

"className" => "Phalcon_wifi\Admin\Module",

"path" => __DIR__ . "/../apps/Admin/Module.php"

),

"Portal" => array(

"className" => "Phalcon_wifi\Portal\Module",

"path" => __DIR__ . "/../apps/Portal/Module.php"

)

));

 

echo $application->handle()->getContent();

} catch (Exception $e) {

echo $e->getMessage();

}

上述代码中config,是单独放在一个文件apps/common/config/config.php如下:

<?php 

namespace Phalcon_wifi\Common\Config;

 

class Config {

public $config;

 

public function __construct() {

//module对应整型数值

$configs["common"]["modules"] = array("Admin" => 1, "Brand" => 2, "Agent" => 3, "Merchant" => 4);

 

//缓存文件夹

$configs["common"]["application"] =  array('cacheDir' => __DIR__ . '/../cache/');

 

//不需要进行登陆验证的url()

$configs["common"]["not_check_uri"] =  array("Admin/Members/login", "Admin/Index/getValidateCode", "Admin/Index/test", "Admin/Members/confirmLogin");

 

//常用的静态数据

$configs["common"]["config_setting"] = [

"group" => [

1=>"图片配置",

2=>"路由器配置",

3=>"短信网关配置",

4=>"邮件配置",

5=>"系统配置"

],

"type" => [

1=>"字符",

2=>"文本",

3=>"数组",

4=>"枚举",

5=>"密码",

6=>"长文本",

7=>"加长文本",

8=>"数字"

]

];

 

//系统版本

$configs["common"]["version"] =  "0.0.1";

 

//数据库配置

$configs["common"]["db"] =  [

"host" => "XXXXXX",

"username" => "XXXX",

"password" => "xxxxxxx",

"dbname" => "xxxxxxxx",

"charset" => "utf8"

];

 

//数据库备份文件名

$configs["common"]["dblog"] = "/../apps/Common/logs/db_" . date("Y_m_d_H") . ".log";

 

//app baseuri

$configs["common"]["baseuri"] = "/project_wifi/phalcon_wifi/";

 

$this->config = new \Phalcon\Config($configs);

}

}

 

具体的项目代码,数据库文件,api文档进行打包,有兴趣的进行下载进行参考,有好的想法,见解,请给出宝贵的意见,运行该项目请修改apps/common/config/config.php中的baseUri,每个人的项目可能不一样。

 

部分运行效果见附件

 

 

  • admin.rar (881.3 KB)
  • 描述: 使用的模板
  • 下载次数: 13
  • 大小: 874.6 KB
  • 描述: 登录成功跳转到首页效果
  • 大小: 155.1 KB
  • 描述: 配置管理列表效果
  • 大小: 110 KB
分享到:
评论
1 楼 弹指一世界 2017-04-27  
感谢博主分享,但是我把项目下载下来放本地运行报了一个错误Exception:Phalcon_wifi\Admin\Controllers\ProjectWifiController handler class cannot be loaded;找了一个下午都没找出来,数据库是没问题的,就是不知道哪出错了,入口文件也检查了

相关推荐

    Phalcon php框架 v2.0.2.zip

    PhalconPHP 是一个使用 C 扩展开发的 PHP Web 框架,提供高性能和低资源占用。   Phalcon 是一个开源的、全堆栈的 PHP 5 框架,使用 C 扩展编写,专门为高性能优化。无需学习和使用 C 语言,所有函数都以 PHP 类...

    PHP7框架Phalcon7 v1.2.3

    Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。Phalcon 不只是为了卓越的性能, 我们的目标是让它更加健壮,拥有更加丰富的功能以及更加简单易于使用!基于Phalcon框架1.3版本开发,继承优化了DI(多...

    php_phalcon.dll

    windows下phalcon插件,php5.3用

    Phalcon MVC项目源码

    基于Phalcon的mvc项目配置,本资源中包含多种不同风格的项目配置, 有;color:red;"&gt;8种基于不同目录结构的mvc配置, 适合初学者参考

    php7.0.12 redis.dll php_phalcon.dll

    php7.0.12 ,redis.dll php,_phalcon.dll 扩展。。 php7.0.12 ,redis.dll php,_phalcon.dll 扩展

    php7.2 phalcon扩展 64位

    windows平台上,php7.2版本, phalcon扩展 ,64位 ,下载解压到ext目录,开启扩展使用

    PHP扩展Phalcon源码

    Phalcon is an open source full stack framework for PHP, written as a C-extension. Phalcon is optimized for high performance. Its unique architecture allows the framework to always be memory resident, ...

    PhalconPHP 3.4.0.zip

    PhalconPHP 3.4.0 更新日志:2018-05-28添加Phalcon\Mvc\Router::attach直接将路由对象添加到路由器#13326中;增加了侦听请求的功能:beforeAuthorizationResolve和request:afterAuthorizationResolve事件,这种...

    php5.5.12的phalcon插件

    php5.5.12的phalcon插件,线程安全版,试用没问题

    Phalcon7 (高性能 PHP 7框架) v1.2.3.zip

    Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。 Phalcon7 (高性能 PHP 7框架) v1.2.3更新日志 该版本修复了 Model、Security 和 Request 中的 BUG。 新增了 `PhalconIntrusiveAvltree` 类 ...

    phalcon_2.0_x64

    phalcon_x64_VC9_php5.3.9_2.0.0.zip phalcon_x64_VC9_php5.3.9_2.0.0_nts.zip phalcon_x64_VC9_php5.4.0_2.0.0.zip phalcon_x64_VC9_php5.4.0_2.0.0_nts.zip phalcon_x64_VC11_php5.5.0_2.0.0.zip phalcon_x...

    C语言开发高性能PHP7框架Phalcon7.zip

    Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。Phalcon 不只是为了卓越的性能, 我们的目标是让它更加健壮,拥有更加丰富的功能以及更加简单易于使用!基于Phalcon框架1.3版本开发,继承优化了DI(多...

    phalcon-php

    phalcon-php 官方文档

    高性能PHP(C语言开发)的Phalcon 框架官方文档

    高性能PHP(C语言开发)的Phalcon 框架官方文档phalcon-php-framework-documentation.pdf 在国际开发者调查中,使用PHP框架中的第二名就是Phalcon,性能最快,功能完备,用PHP扩展方式提供

    phalcon_x64_vc14_php7.0.0_3.0.3

    phalcon_x64_vc14_php7.0.0_3.0.3

    php_phalcon

    php_phalcon.dll 5.5.12 64位

Global site tag (gtag.js) - Google Analytics