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,每个人的项目可能不一样。
部分运行效果见附件
相关推荐
Phalcon是一个高效的PHP框架,以C语言编写,旨在提供高性能的Web应用开发。在本案例中,我们关注的是与PHP7.2版本兼容的64位Phalcon扩展,该扩展适用于Windows操作系统。以下是对这个主题的详细解释: 1. **Phalcon...
Phalcon是一个高效的PHP框架,以C语言编写并作为PHP扩展运行。它的主要优点是性能出色,因为大部分工作在C层完成,比纯PHP代码执行更快。"phalcon.dll"是Phalcon框架在Windows操作系统下的动态链接库文件,它是...
PhalconPHP 是一个使用 C 扩展开发的 PHP Web 框架,提供高性能和低资源占用。 Phalcon 是一个开源的、全堆栈的 PHP 5 框架,使用 C 扩展编写,专门为高性能优化。无需学习和使用 C 语言,所有函数都以 PHP 类...
Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。Phalcon 不只是为了卓越的性能, 我们的目标是让它更加健壮,拥有更加丰富的功能以及更加简单易于使用!基于Phalcon框架1.3版本开发,继承优化了DI(多...
标题 "php7.0.12 redis.dll php_phalcon.dll" 暗示了这是一个关于 PHP 7.0.12 版本的扩展安装包,包含 `redis.dll` 和 `php_phalcon.dll` 文件。这两个文件是 PHP 的扩展模块,用于增强 PHP 对 Redis 数据库和 ...
总的来说,"php5.5.12的phalcon插件"是一个为PHP开发提供强大性能提升和功能扩展的工具,尤其适合需要处理高并发和大数据量的项目。通过理解和熟练使用Phalcon,开发者可以构建出高效、安全且易于维护的PHP应用程序...
windows下phalcon插件,php5.3用
基于Phalcon的mvc项目配置,本资源中包含多种不同风格的项目配置, 有;color:red;">8种基于不同目录结构的mvc配置, 适合初学者参考
Phalcon是一个高性能的PHP框架,它以C语言编写并作为PHP扩展存在,旨在提升Web应用程序的性能和效率。"phalcon_x64_vc14_php7.0.0_3.0.3" 这个文件名暗示了这是Phalcon框架的一个特定版本,适用于64位操作系统,使用...
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, ...
Phalcon PHP是一个高性能的PHP框架,它以C扩展的形式实现,提供了卓越的性能和更低的资源消耗。这个框架的设计理念是让开发人员能够快速、高效地构建Web应用程序。"phalcon-php官方文档"包含了所有关于Phalcon PHP的...
PhalconPHP 3.4.0 更新日志:2018-05-28添加Phalcon\Mvc\Router::attach直接将路由对象添加到路由器#13326中;增加了侦听请求的功能:beforeAuthorizationResolve和request:afterAuthorizationResolve事件,这种...
你无需学习或使用C语言,因为其功能已作为PHP类公开,可以直接在你的项目中使用。此外,Phalcon的耦合度较低,让你可以根据应用程序的需求灵活地使用其对象作为粘合组件。 Phalcon不仅关注性能,还致力于打造一个...
Phalcon 也是松耦合的,可以根据项目的需要任意使用其他对象。 Phalcon7 (高性能 PHP 7框架) v1.2.3更新日志 该版本修复了 Model、Security 和 Request 中的 BUG。 新增了 `PhalconIntrusiveAvltree` 类 ...
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...
Phalcon是一个高性能的PHP框架,它以C语言扩展的形式实现,提供了卓越的性能和更低的资源消耗。在“phalcon_x64_VC9_php5.4.0_1.3.4”这个压缩包中,我们可以看到是为64位(x64)系统、使用Visual C++ 9编译器构建,...