1. 简介和搭建开发环境

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 本身,还需要一些必要的扩展和工具:

  1. PDO 扩展:Phalcon 的数据库组件依赖 PDO(PHP 数据对象)扩展。根据使用的数据库类型,还需要安装相应的驱动,如 MySQL 需要 php_mysqlnd,PostgreSQL 需要 php_pgsql
  2. PCRE 库:Phalcon 使用 PCRE(Perl 兼容正则表达式)库进行模式匹配。在不同系统上可能需要安装 libpcre3-dev(Debian/Ubuntu)、pcre-devel(CentOS)或 pcre(macOS)。
  3. 其他可选扩展:根据应用需求,可能还需要安装 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 的框架架构和核心组件,为后续开发打下坚实基础。