1.简介和搭建开发环境
Phalcon 介绍
当我第一次听闻 Phalcon 时有所疑虑,心里想着“又是一个 PHP 框架,能有什么特别之处呢?”。然而,深入了解之后,发现 Phalcon 确实别具一格。
Phalcon 最独特的地方在于它不是用 PHP 编写的传统框架,而是一个以 C 扩展形式提供的全栈 PHP 框架。这意味着当我们在 PHP 代码中调用 Phalcon 的类和方法时,实际上是在与编译后的 C 代码交互,这带来了显著的性能优势。
想象一下,传统 PHP 框架每次请求都需要加载数十个文件,解析成千上万行代码,而 Phalcon 则常驻内存,无需每次请求都重新读取和解析文件。这种架构设计让 Phalcon 在性能测试中常常领先其他框架数倍,甚至在某些场景下接近原生 PHP 的性能。
但不需要了解 C 语言也能使用 Phalcon。框架的接口以 PHP 类的形式暴露在 Phalcon
命名空间下,使用方式与其他 PHP 框架类似。这种设计让开发者可以享受 C 语言的性能优势,同时继续使用熟悉的 PHP 语法进行开发。
Phalcon 采用松耦合架构,这意味着我们可以只使用需要的组件,而不必引入整个框架。需要一个轻量级的路由系统?只需使用 Phalcon 的路由组件。想要一个强大的依赖注入容器?Phalcon 也能满足。这种灵活性让 Phalcon 适用于从简单 API 到复杂企业应用的各种场景。
环境要求
在开始安装 Phalcon 之前,我们需要确保开发环境满足基本要求。Phalcon 5.5 需要 PHP 8.0 或更高版本,虽然 PHP 8.0 的官方支持已经结束,但 Phalcon 团队为了给开发者足够的升级时间,仍然提供支持。不过,我建议尽可能使用最新的 PHP 版本,以获得更好的性能和安全性。
除了 PHP 本身,还需要一些必要的扩展和工具:
- PDO 扩展:Phalcon 的数据库组件依赖 PDO(PHP 数据对象)扩展。根据使用的数据库类型,还需要安装相应的驱动,如 MySQL 需要
php_mysqlnd
,PostgreSQL 需要php_pgsql
。 - PCRE 库:Phalcon 使用 PCRE(Perl 兼容正则表达式)库进行模式匹配。在不同系统上可能需要安装
libpcre3-dev
(Debian/Ubuntu)、pcre-devel
(CentOS)或pcre
(macOS)。 - 其他可选扩展:根据应用需求,可能还需要安装 curl、fileinfo、gettext、gd2/imagick、json、openssl、mbstring 等扩展。
关于硬件要求,Phalcon 的设计理念是尽可能少地占用资源。我曾经在只有 512MB 内存和 1 个 vCPU 的云服务器上成功运行过基于 Phalcon 的网站和博客,性能表现令人满意。当然,具体的硬件需求还是取决于应用规模和预期流量。
一个容易被忽视但非常重要的点是扩展加载顺序。Phalcon 需要在 PDO 之后加载。如果使用的是按数字前缀排序的 ini 文件(如某些 Linux 发行版),请确保 Phalcon 的 ini 文件编号高于 PDO,例如 50-phalcon.ini
。如果只有一个 php.ini 文件,确保扩展加载顺序如下:
extension=pdo.so
extension=phalcon.so
安装 Phalcon 扩展
安装 Phalcon 与安装其他 PHP 框架不同,因为它是一个 C 扩展。这可能会让一些习惯了 Composer 一键安装的开发者感到陌生,但整个过程其实并不复杂。
使用 PECL 安装
PECL(PHP 扩展社区库)是安装 PHP 扩展的推荐方式,适用于 Windows、Linux 和 macOS 系统。首先确保已经安装了 pecl/pear,然后执行以下命令:
pecl channel-update pecl.php.net
pecl install phalcon
这条命令会从 PECL 仓库下载最新的 Phalcon 源码并在系统上编译安装。对于 Windows 用户,PECL 会提供预编译的 DLL 文件,省去了编译步骤。
Linux 系统特定方法
不同的 Linux 发行版有各自的包管理系统,有些社区维护了 Phalcon 的二进制包,这可以简化安装过程。
对于基于 Debian/Ubuntu 的系统,可以使用 Ondřej Surý 维护的 PPA 仓库:
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php-phalcon5
对于基于 RPM 的系统(如 CentOS),可以使用 Remi Collet 维护的仓库:
yum install php80-php-phalcon5
这些方法会自动处理依赖关系,并为 PHP 版本安装合适的 Phalcon 版本。
macOS 系统
macOS 用户可以使用 Homebrew 安装 Phalcon:
brew tap phalcon/extension https://github.com/phalcon/homebrew-tap
brew install phalcon
如果想从源码编译,可以添加 --build-from-source
选项:
brew install phalcon --build-from-source
安装完成后,需要编辑 php.ini 文件,添加 extension=php_phalcon.so
,然后重启 Web 服务器。
Windows 系统
Windows 用户需要下载与 PHP 版本和架构匹配的 DLL 文件。可以从 Phalcon 的官方下载页面获取。需要注意的是,要根据 PHP 是线程安全(TS)还是非线程安全(NTS)版本,以及是 32 位还是 64 位架构来选择正确的 DLL。
下载后,将 DLL 文件放入 PHP 的 ext 目录,然后在 php.ini 中添加:
extension=php_phalcon.dll
重启 Web 服务器后,Phalcon 应该就安装成功了。
从源码编译
如果需要最新的开发版本,或者系统没有预编译的包,那么可以从源码编译 Phalcon。这需要一些额外的工具,如 GCC 编译器、re2c 和 Zephir 解析器。
首先安装 Zephir 解析器:
pecl install zephir_parser
然后下载 Zephir 编译器:
wget https://github.com/phalcon/zephir/releases/latest/download/zephir.phar
chmod +x zephir.phar
mv zephir.phar /usr/local/bin/zephir
接下来克隆 Phalcon 源码并编译:
git clone https://github.com/phalcon/cphalcon
cd cphalcon
git checkout tags/v5.5.0 ./
zephir fullclean
zephir build
编译完成后,需要手动将生成的扩展添加到 php.ini 文件中。
配置开发工具
安装好 Phalcon 扩展后,下一步是配置开发工具。Phalcon 提供了一套命令行工具,可以帮助我们快速生成项目骨架、控制器、模型等代码,极大地提高开发效率。
安装 Phalcon DevTools
Phalcon DevTools 可以通过 Composer 安装。如果想在全局使用,可以执行:
composer global require phalcon/devtools
确保 Composer 的全局 bin 目录在 PATH 环境变量中,这样就可以直接在命令行中使用 phalcon
命令了。
如果只想在特定项目中使用,可以在项目目录下执行:
composer require phalcon/devtools
安装完成后,可以通过以下命令验证安装是否成功:
phalcon
如果一切正常,我们会看到 Phalcon DevTools 的版本信息和可用命令列表:
Phalcon DevTools (5.0.0)
Available commands:
info (alias of: i)
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
serve (alias of: server)
console (alias of: shell, psysh)
配置数据库连接
在使用 DevTools 生成模型或脚手架之前,需要配置数据库连接信息。当我们创建新项目时,Phalcon 会生成一个配置文件 app/config/config.php
。我们需要编辑这个文件,设置正确的数据库连接参数:
return new \Phalcon\Config([
'database' => [
'adapter' => 'Mysql',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'test',
'charset' => 'utf8',
],
// ...其他配置
]);
确保这里的设置与数据库环境匹配,否则后续生成模型时会失败。
创建第一个项目
有了 Phalcon DevTools,创建新项目变得非常简单。在命令行中切换到 Web 服务器文档根目录,执行以下命令:
phalcon create-project store
这个命令会在当前目录下创建一个名为 store
的新项目。也可以通过 --directory
选项指定项目创建的路径:
phalcon create-project store --directory /var/www/html
Phalcon 支持多种项目类型,可以通过 --type
选项指定:
simple
: 简单的 MVC 结构(默认)micro
: 适合 API 开发的微框架结构modules
: 模块化结构cli
: 命令行应用结构
例如,创建一个 API 项目:
phalcon create-project api --type micro
项目创建完成后,会看到类似以下的目录结构:
store/
├── app/
│ ├── controllers/
│ ├── models/
│ ├── views/
│ ├── config/
│ ├── migrations/
│ ├── plugins/
│ └── library/
├── public/
│ ├── index.php
│ ├── css/
│ ├── js/
│ └── img/
├── cache/
└── vendor/
app/
: 应用的核心代码目录,包含控制器、模型、视图等public/
: Web 服务器可访问的公共目录,包含入口文件和静态资源cache/
: 缓存文件目录vendor/
: Composer 依赖包目录
验证安装结果
项目创建完成后,我们需要验证 Phalcon 是否正确安装并运行。有几种方法可以进行验证:
通过 phpinfo()验证
创建一个包含 phpinfo()
的文件,放在 Web 服务器的文档根目录下:
<?php
phpinfo();
在浏览器中访问这个文件,搜索"phalcon"。如果看到 Phalcon 的配置部分,说明扩展已成功加载。
通过项目访问验证
如果使用 DevTools 创建了项目,可以直接在浏览器中访问项目的 public 目录。如果一切正常,会看到 Phalcon 的欢迎页面。
通过命令行验证
在项目目录下执行:
phalcon serve
这会启动一个内置的 PHP 开发服务器,默认监听 8000 端口。然后在浏览器中访问 http://localhost:8000
,应该能看到项目的欢迎页面。
检查扩展状态
在命令行中执行:
php -m | grep phalcon
如果输出"phalcon",说明扩展在 CLI 环境中也已正确加载。
总结
搭建 Phalcon 开发环境虽然比安装传统 PHP 框架多了一些步骤,但整个过程还是相对简单的。通过 PECL 或包管理器可以轻松安装 Phalcon 扩展,而 DevTools 则极大地简化了项目创建和代码生成过程。
环境搭建完成后,我们就可以开始使用 Phalcon 的强大功能进行应用开发了。在下一章中,我们将深入了解 Phalcon 的框架架构和核心组件,为后续开发打下坚实基础。