[TOC]
# 基础教程
在本教程中,我们将引导您从头开始创建一个简单注册表单的应用程序。以下指南将向您介绍Phalcon框架的设计方面。
本教程介绍了一个简单的MVC应用程序的实现,展示了使用Phalcon可以快速轻松地完成它。本教程将帮助您入门并帮助创建可扩展的应用程序以满足许多需求。本教程中的代码也可以用作学习其他Phalcon特定概念和想法之地。
如果您只是想开始使用,可以跳过此步骤并使用我们的开发者工具自动创建Phalcon项目。(如果你没有经验,如果你遇到困难,可以回到这里)
使用本指南的最佳方式是跟随并尝试获得乐趣。您可以在此处获取完整的代码。如果您对某些事情感到不知所措,请访问我们的[Discord](https://phalcon.link/discord)或我们的[论坛](https://phalcon.link/forum)。
## 文件结构
Phalcon的一个关键特性是松散耦合,您可以构建一个Phalcon项目,其目录结构便于您的特定应用程序。这表示在与其他人合作时,一些统一性是有用的,因此本教程将使用“标准”结构,如果您过去曾与其他MVC合作过,您应该有宾至如归的感觉。
```text
.
└── tutorial
├── app
│ ├── controllers
│ │ ├── IndexController.php
│ │ └── SignupController.php
│ ├── models
│ │ └── Users.php
│ └── views
└── public
├── css
├── img
├── index.php
└── js
```
>[warning] 注意:您不会看到`vendor`目录,因为所有Phalcon的核心依赖项都是通过您应该安装的Phalcon扩展加载到内存中的。如果您错过了那部分尚未安装Phalcon扩展请返回并完成安装,然后继续。
如果这是全新的,建议您安装Phalcon Devtools,因为它利用PHP的内置服务器来运行您的应用程序,而无需通过将此[.htrouter](https://github.com/phalcon/phalcon-devtools/blob/master/templates/.htrouter.php) 添加到项目的根目录来配置Web服务器。
否则,如果你想使用Nginx,请查看`Web服务器设置`章节。
Apache也可以在`Web服务器设置`使用这些附加设置。
最后,如果你的最爱是Cherokee,请查看`Web服务器设置`章节。
## Bootstrap
您需要创建的第一个文件是启动程序文件。此文件充当应用程序的入口点和配置。在此文件中,您可以实现组件的初始化以及应用程序行为。
这个文件处理3件事:
- 注册自动加载组件
- 配置服务并使用依赖注入上下文注册它们
- 解析应用程序的HTTP请求
### 自动加载
自动加载器利用通过Phalcon运行的兼容[PSR-4](http://www.php-fig.org/psr/psr-4/)的文件加载器。应添加到自动装带器的常见事项是控制器和模型。您可以注册将在应用程序命名空间中搜索文件的目录。如果您想了解其他可以使用自动加载器的方法,请访问`类加载器`章节。
首先,让我们注册我们的应用程序的`controllers`和`models`目录。不要忘记包括`Phalcon\Loader`的加载器。
`public/index.php`
```php
use Phalcon\Loader;
// 定义一些绝对路径常量以帮助定位资源
define('BASE_PATH', dirname(__DIR__));
define('APP_PATH', BASE_PATH . '/app');
// ...
$loader = new Loader();
$loader->registerDirs(
[
APP_PATH . '/controllers/',
APP_PATH . '/models/',
]
);
$loader->register();
```
### 依赖管理
由于Phalcon松耦合,因此服务在框架依赖管理中注册,因此可以将它们自动注入包含在[IoC](https://en.wikipedia.org/wiki/Inversion_of_control)容器中的组件和服务。通常你会遇到DI这个词代表依赖注入。依赖注入和控制反转(IoC)可能听起来像一个复杂的功能,但在Phalcon中它们的使用非常简单实用。Phalcon的IoC容器包含以下概念:
- 服务容器:一个“包”,我们在全局存储我们的应用程序需要运行的服务。