# 微應用(Micro Applications)
# 微應用(Micro Applications)
使用Phalcon框架開發者可以創建微框架應用。 這樣開發者只需要書寫極少的代碼即可創建一個PHP應用。 微應用適用于書寫小的應用, API或原型等
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro;
$app = new Micro();
$app->get('/say/welcome/{name}', function ($name) {
echo "<h1>Welcome $name!</h1>";
});
$app->handle();
```
```
### 創建微應用(Creating a Micro Application)
Phalcon中 使用 [*Phalcon\\Mvc\\Micro*](#) 來實現微應用。
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro;
$app = new Micro();
```
```
### 定義路由(Defining routes)
實例化后, 開發者需要添加一些路由規則。 Phalcon內部使用 [*Phalcon\\Mvc\\Router*](#) 來管理路由。 路由必須以 / 開頭。定義路由時通常會書寫http方法約束, 這樣路由規則只適用于那些和規則及htttp方法相匹配的路由。 下面的方法展示了如何定義了HTTP get方法路由:
```
<pre class="calibre14">```
<?php
$app->get('/say/hello/{name}', function ($name) {
echo "<h1>Hello! $name</h1>";
});
```
```
get 方法指定了要匹配的請求方法。 路由規則 /say/hello/{name} 中含有一個參數 {$name}, 此參數會直接傳遞給路由的處理器(此處為匿名函數)。 路由規則匹配時處理器即會執行。處理器是PHP中任何可以被調用的項。 下面的示例中展示了如何定義不同種類的處理器:
```
<pre class="calibre14">```
<?php
// 函數
function say_hello($name) {
echo "<h1>Hello! $name</h1>";
}
$app->get('/say/hello/{name}', "say_hello");
// 靜態方法
$app->get('/say/hello/{name}', "SomeClass::someSayMethod");
// 對象內的方法
$myController = new MyController();
$app->get('/say/hello/{name}', array($myController, "someAction"));
// 匿名函數
$app->get('/say/hello/{name}', function ($name) {
echo "<h1>Hello! $name</h1>";
});
```
```
[*Phalcon\\Mvc\\Micro*](#) 提供了一系列的用于定義http方法的限定方法:
```
<pre class="calibre14">```
<?php
// 匹配http get 方法:
$app->get('/api/products', "get_products");
// 匹配HTTP post方法
$app->post('/api/products/add', "add_product");
// 匹配http put 方法
$app->put('/api/products/update/{id}', "update_product");
// 匹配http delete方法
$app->delete('/api/products/remove/{id}', "delete_product");
// 匹配http options方法
$app->options('/api/products/info/{id}', "info_product");
// 匹配http patch方法
$app->patch('/api/products/update/{id}', "info_product");
// 匹配http get 或 post方法
$app->map('/repos/store/refs',"action_product")->via(array('GET', 'POST'));
```
```
To access the HTTP method data $app needs to be passed into the closure:
```
<pre class="calibre14">```
<?php
// Matches if the HTTP method is POST
$app->post('/api/products/add', function () use ($app) {
echo $app->request->getPost("productID");
});
```
```
### 路由參數(Routes with Parameters)
如上面的例子中展示的那樣在路由中定義參數是非常容易的。 參數名需要放在花括號內。 參數格式亦可使用正則表達式以確保數據一致性。 例子如下:
```
<pre class="calibre14">```
<?php
// 此路由有兩個參數每個參數有一格式
$app->get('/posts/{year:[0-9]+}/{title:[a-zA-Z\-]+}', function ($year, $title) {
echo "<h1>Title: $title</h1>";
echo "<h2>Year: $year</h2>";
});
```
```
### 起始路由(Starting Route)
通常情況下, 應用一般由 / 路徑開始訪問, 當然此訪問多為 GET方法。 這種情況代碼如下:
```
<pre class="calibre14">```
<?php
// 超始路由
$app->get('/', function () {
echo "<h1>Welcome!</h1>";
});
```
```
### 重寫規則(Rewrite Rules)
下面的規則用來實現apache重寫:
```
<pre class="calibre14">```
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
```
```
### 處理響應(Working with Responses)
開發者可以在路由處理器中設置任務種類的響應:直接輸出, 使用模板引擎, 包含視圖, 返回json數據等。
```
<pre class="calibre14">```
<?php
// 直接輸出
$app->get('/say/hello', function () {
echo "<h1>Hello! $name</h1>";
});
// 包含其它文件
$app->get('/show/results', function () {
require 'views/results.php';
});
// 返回JSON
$app->get('/get/some-json', function () {
echo json_encode(array("some", "important", "data"));
});
```
```
另外開發者還可以使用 [*“response”*](#) , 這樣開發者可以更好的處理結果:
```
<pre class="calibre14">```
<?php
$app->get('/show/data', function () use ($app) {
// 設置返回頭部內容格式
$app->response->setContentType('text/plain')->sendHeaders();
// 輸出文件內容
readfile("data.txt");
});
```
```
或回復response對象:
```
<pre class="calibre14">```
<?php
$app->get('/show/data', function () {
// 創建Response類實例
$response = new Phalcon\Http\Response();
// Set the Content-Type header 設置返回內容的類型
$response->setContentType('text/plain');
// 設置文件內容參數
$response->setContent(file_get_contents("data.txt"));
// 返回response實例對象
return $response;
});
```
```
### 重定向(Making redirections)
重定向用來在當前的處理中跳轉到其它的處理流:
```
<pre class="calibre14">```
<?php
// 此路由重定向到其它的路由
$app->post('/old/welcome', function () use ($app) {
$app->response->redirect("new/welcome")->sendHeaders();
});
$app->post('/new/welcome', function () use ($app) {
echo 'This is the new Welcome';
});
```
```
### 根據路由生成 URL(Generating URLs for Routes)
Phalcon中使用 [*Phalcon\\Mvc\\Url*](#) 來生成其它的基于路由的URL。 開發者可以為路由設置名字, 通過這種方式 “url” 服務可以產生相關的路由:
```
<pre class="calibre14">```
<?php
// 設置名為 "show-post"的路由
$app->get('/blog/{year}/{title}', function ($year, $title) use ($app) {
// .. show the post here
})->setName('show-post');
// 產生url
$app->get('/', function () use ($app) {
echo '<a href="', $app->url->get(array(
'for' => 'show-post',
'title' => 'php-is-a-great-framework',
'year' => 2015
)), '">Show the post</a>';
});
```
```
### 與依賴注入的交互(Interacting with the Dependency Injector)
微應用中, [*Phalcon\\DI\\FactoryDefault*](#) 是隱含生成的, 不過開發者可以明確的生成此類的實例以用來管理相關的服務:
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro;
use Phalcon\DI\FactoryDefault;
use Phalcon\Config\Adapter\Ini as IniConfig;
$di = new FactoryDefault();
$di->set('config', function () {
return new IniConfig("config.ini");
});
$app = new Micro();
$app->setDI($di);
$app->get('/', function () use ($app) {
// Read a setting from the config
echo $app->config->app_name;
});
$app->post('/contact', function () use ($app) {
$app->flash->success('Yes!, the contact was made!');
});
```
```
服務容器中可以使用數據類的語法來設置或取服務實例:
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro;
use Phalcon\Db\Adapter\Pdo\Mysql as MysqlAdapter;
$app = new Micro();
// 設置數據庫服務實例
$app['db'] = function () {
return new MysqlAdapter(array(
"host" => "localhost",
"username" => "root",
"password" => "secret",
"dbname" => "test_db"
));
};
$app->get('/blog', function () use ($app) {
$news = $app['db']->query('SELECT * FROM news');
foreach ($news as $new) {
echo $new->title;
}
});
```
```
### 處理Not-Found(Not-Found Handler)
當用戶訪問未定義的路由時, 微應用會試著執行 “Not-Found”處理器。 示例如下:
```
<pre class="calibre14">```
<?php
$app->notFound(function () use ($app) {
$app->response->setStatusCode(404, "Not Found")->sendHeaders();
echo 'This is crazy, but this page was not found!';
});
```
```
### 微應用中的模型(Models in Micro Applications)
Phalcon中開發者可以直接使用 [*Models*](#) , 開發者只需要一個類自動加載器來加載模型:
```
<pre class="calibre14">```
<?php
$loader = new \Phalcon\Loader();
$loader->registerDirs(array(
__DIR__ . '/models/'
))->register();
$app = new \Phalcon\Mvc\Micro();
$app->get('/products/find', function () {
foreach (Products::find() as $product) {
echo $product->name, '<br>';
}
});
$app->handle();
```
```
### 微應用中的事件(Micro Application Events)
當有事件發生時 [*Phalcon\\Mvc\\Micro*](#) 會發送事件到 [*EventsManager*](#) 。 這里使用 “micro” 來綁定處理事件。 支持如下事件:
事件名如何觸發是否可中斷執行beforeHandleRoute處理方法調用之前執行, 此時應用程序還不知道是否存在匹配的路由是beforeExecuteRoute存在匹配的路由及相關的處理器, 不過處理器還未被執行是afterExecuteRoute處理器執行之后觸發否beforeNotFoundNotFound觸發之前執行是afterHandleRoute處理器執行之后執行是下面的例子中, 我們闡述了如何使用事件來控制應用的安全性:
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro,
Phalcon\Events\Manager as EventsManager;
// 創建事件監聽器
$eventManager = new EventsManager();
// 監聽應用的所有事件
$eventManager->attach('micro', function ($event, $app) {
if ($event->getType() == 'beforeExecuteRoute') {
if ($app->session->get('auth') == false) {
$app->flashSession->error("The user isn't authenticated");
$app->response->redirect("/")->sendHeaders();
// 返回false來中止操作
return false;
}
}
});
$app = new Micro();
// 綁定事件管理器到應用
$app->setEventsManager($eventManager);
```
```
### 中間件事件(Middleware events)
此外, 應用事件亦可使用 ‘before', ‘after', ‘finish'等來綁定:
```
<pre class="calibre14">```
<?php
$app = new Phalcon\Mvc\Micro();
// 每個路由匹配之前執行
// 返回false來中止程序執行
$app->before(function () use ($app) {
if ($app['session']->get('auth') == false) {
return false;
}
return true;
});
$app->map('/api/robots', function () {
return array(
'status' => 'OK'
);
});
$app->after(function () use ($app) {
// 路由處理器執行后執行
echo json_encode($app->getReturnedValue());
});
$app->finish(function () use ($app) {
// 路由處理器執行后執行
});
```
```
開發者可以對同一事件注冊多個處理器:
```
<pre class="calibre14">```
<?php
$app->finish(function () use ($app) {
// 第一個結束處理器
});
$app->finish(function () use ($app) {
// 第二個結束處理器
});
```
```
把這些代碼放在另外的文件中以達到重用的目的:
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro\MiddlewareInterface;
/**
* CacheMiddleware
*
* 使用緩存來提升性能
*/
class CacheMiddleware implements MiddlewareInterface
{
public function call($application)
{
$cache = $application['cache'];
$router = $application['router'];
$key = preg_replace('/^[a-zA-Z0-9]/', '', $router->getRewriteUri());
// 檢查請示是否被處理了
if ($cache->exists($key)) {
echo $cache->get($key);
return false;
}
return true;
}
}
```
```
添加實例到應用:
```
<pre class="calibre14">```
<?php
$app->before(new CacheMiddleware());
```
```
支持如下的中間件事件:
事件名觸發是否可中止操作?before應用請求處理之前執行,常用來控制應用的訪問權限Yesafter請求處理后執行,可以用來準備回復內容Nofinish發送回復內容后執行, 可以用來執行清理工作No### 使用控制器處理(Using Controllers as Handlers)
中型的應用可以使用 Micro\\Mvc 來組織控制器中的處理器。 開發者也可以使用 [*Phalcon\\Mvc\\Micro\\Collection*](#) 來對控制器中的處理器進行歸組:
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro\Collection as MicroCollection;
$posts = new MicroCollection();
// 設置主處理器,這里是控制器的實例
$posts->setHandler(new PostsController());
// 對所有路由設置前綴
$posts->setPrefix('/posts');
// 使用PostsController中的index action
$posts->get('/', 'index');
// 使用PostController中的show action
$posts->get('/show/{slug}', 'show');
$app->mount($posts);
```
```
PostsController形如下:
```
<pre class="calibre14">```
<?php
class PostsController extends Phalcon\Mvc\Controller
{
public function index()
{
// ...
}
public function show($slug)
{
// ...
}
}
```
```
上面的例子中,我們直接對控制器進行了實例化, 使用集合時Phalcon會提供了遲加載的能力, 這樣程序只有在匹配路由時才加載控制器:
```
<pre class="calibre14">```
<?php
$posts->setHandler('PostsController', true);
$posts->setHandler('Blog\Controllers\PostsController', true);
```
```
### 返回響應(Returning Responses)
處理器可能會返回原生的 [*Phalcon\\Http\\Response*](#) 實例或實現了相關接口的組件。 當返回Response對象時, 應用會自動的把處理結果返回到客戶端。
```
<pre class="calibre14">```
<?php
use Phalcon\Mvc\Micro;
use Phalcon\Http\Response;
$app = new Micro();
// 返回Response實例
$app->get('/welcome/index', function () {
$response = new Response();
$response->setStatusCode(401, "Unauthorized");
$response->setContent("Access is not authorized");
return $response;
});
```
```
### 渲染視圖(Rendering Views)
[*Phalcon\\Mvc\\View\\Simple*](#) 可用來渲染視圖, 示例如下:
```
<pre class="calibre14">```
<?php
$app = new Phalcon\Mvc\Micro();
$app['view'] = function () {
$view = new \Phalcon\Mvc\View\Simple();
$view->setViewsDir('app/views/');
return $view;
};
// 返回渲染過的視圖
$app->get('/products/show', function () use ($app) {
// 渲染視圖時傳遞參數
echo $app['view']->render('products/show', array(
'id' => 100,
'name' => 'Artichoke'
));
});
```
```
### Error Handling
A proper response can be generated if an exception is raised in a micro handler:
```
<pre class="calibre14">```
<?php
$app = new Phalcon\Mvc\Micro();
$app->get('/', function () {
throw new \Exception("An error");
});
$app->error(function ($exception) {
echo "An error has occurred";
});
```
```
If the handler returns “false” the exception is stopped.
### 相關資源(Related Sources)
- [*Creating a Simple REST API*](#) 例子中講解了如何使用微應用來創建Restfull服務:
- [Stickers Store](http://store.phalconphp.com) 也是一個簡單的使用微應用的例子 \[[Github](https://github.com/phalcon/store)\].
|
- [索引](# "總目錄")
- [下一頁](# "使用命名空間(Working with Namespaces)") |
- [上一頁](# "調度控制器(Dispatching Controllers)") |
- API參考
- API列表
- Abstract class Phalcon\Acl
- Abstract class Phalcon\Acl\Adapter
- Class Phalcon\Acl\Adapter\Memory
- Interface Phalcon\Acl\AdapterInterface
- Class Phalcon\Acl\Exception
- Class Phalcon\Acl\Resource
- Interface Phalcon\Acl\ResourceInterface
- Class Phalcon\Acl\Role
- Interface Phalcon\Acl\RoleInterface
- Class Phalcon\Annotations\Annotation
- Abstract class Phalcon\Annotations\Adapter
- Interface Phalcon\Annotations\AdapterInterface
- Class Phalcon\Annotations\Collection
- Class Phalcon\Annotations\Exception
- Class Phalcon\Annotations\Reader
- Interface Phalcon\Annotations\ReaderInterface
- Class Phalcon\Annotations\Reflection
- Class Phalcon\Assets\Collection
- Class Phalcon\Assets\Exception
- Interface Phalcon\Assets\FilterInterface
- Class Phalcon\Assets\Filters\Cssmin
- Class Phalcon\Assets\Filters\Jsmin
- Class Phalcon\Assets\Filters\None
- Class Phalcon\Assets\Inline
- Class Phalcon\Assets\Inline\Css
- Class Phalcon\Assets\Inline\Js
- Class Phalcon\Assets\Manager
- Class Phalcon\Assets\Resource
- Class Phalcon\Assets\Resource\Css
- Class Phalcon\Assets\Resource\Js
- Abstract class Phalcon\Cache\Backend
- Class Phalcon\Cache\Backend\Apc
- Class Phalcon\Cache\Backend\File
- Class Phalcon\Cache\Backend\Libmemcached
- Class Phalcon\Cache\Backend\Memcache
- Class Phalcon\Cache\Backend\Memory
- Class Phalcon\Cache\Backend\Mongo
- Class Phalcon\Cache\Backend\Redis
- Class Phalcon\Cache\Backend\Xcache
- Interface Phalcon\Cache\BackendInterface
- Class Phalcon\Cache\Exception
- Class Phalcon\Cache\Frontend\Base64
- Class Phalcon\Cache\Frontend\Data
- Class Phalcon\Cache\Frontend\Igbinary
- Class Phalcon\Cache\Frontend\Json
- Class Phalcon\Cache\Frontend\None
- Class Phalcon\Cache\Frontend\Output
- Interface Phalcon\Cache\FrontendInterface
- Class Phalcon\Cache\Multiple
- Class Phalcon\Cli\Router\Route
- Class Phalcon\Config
- Class Phalcon\Config\Adapter\Ini
- Class Phalcon\Config\Adapter\Json
- Class Phalcon\Config\Adapter\Php
- Class Phalcon\Config\Adapter\Yaml
- Class Phalcon\Config\Exception
- Class Phalcon\Crypt
- Class Phalcon\Crypt\Exception
- Interface Phalcon\CryptInterface
- Abstract class Phalcon\Db
- Abstract class Phalcon\Db\Adapter
- Interface Phalcon\Db\AdapterInterface
- Class Phalcon\Db\Column
- Interface Phalcon\Db\ColumnInterface
- Abstract class Phalcon\Db\Dialect
- Interface Phalcon\Db\DialectInterface
- Class Phalcon\Db\Exception
- Class Phalcon\Db\Index
- Interface Phalcon\Db\IndexInterface
- Class Phalcon\Db\Profiler
- Class Phalcon\Db\RawValue
- Class Phalcon\Db\Reference
- Interface Phalcon\Db\ReferenceInterface
- Class Phalcon\Db\Result\Pdo
- Interface Phalcon\Db\ResultInterface
- Class Phalcon\Debug
- Class Phalcon\Debug\Dump
- Class Phalcon\Debug\Exception
- Interface Phalcon\DiInterface
- Abstract class Phalcon\Dispatcher
- Interface Phalcon\DispatcherInterface
- Class Phalcon\Escaper
- Class Phalcon\Escaper\Exception
- Interface Phalcon\EscaperInterface
- Class Phalcon\Events\Event
- Interface Phalcon\Events\EventsAwareInterface
- Class Phalcon\Events\Exception
- Class Phalcon\Events\Manager
- Interface Phalcon\Events\ManagerInterface
- Class Phalcon\Exception
- Class Phalcon\Filter
- Class Phalcon\Filter\Exception
- Interface Phalcon\Filter\UserFilterInterface
- Interface Phalcon\FilterInterface
- Abstract class Phalcon\Flash
- Class Phalcon\Flash\Direct
- Class Phalcon\Flash\Exception
- Class Phalcon\Flash\Session
- Interface Phalcon\FlashInterface
- Class Phalcon\Forms\Form
- Abstract class Phalcon\Forms\Element
- Class Phalcon\Forms\Exception
- Class Phalcon\Forms\Manager
- Class Phalcon\Http\Cookie
- Class Phalcon\Http\Cookie\Exception
- Class Phalcon\Http\Request
- Class Phalcon\Http\Request\Exception
- Class Phalcon\Http\Request\File
- Interface Phalcon\Http\Request\FileInterface
- Interface Phalcon\Http\RequestInterface
- Class Phalcon\Http\Response
- Class Phalcon\Http\Response\Cookies
- Interface Phalcon\Http\Response\CookiesInterface
- Class Phalcon\Http\Response\Exception
- Class Phalcon\Http\Response\Headers
- Interface Phalcon\Http\Response\HeadersInterface
- Interface Phalcon\Http\ResponseInterface
- Class Phalcon\Image
- Abstract class Phalcon\Image\Adapter
- Class Phalcon\Image\Adapter\Imagick
- Interface Phalcon\Image\AdapterInterface
- Class Phalcon\Image\Exception
- Class Phalcon\Kernel
- Class Phalcon\Loader
- Class Phalcon\Loader\Exception
- Abstract class Phalcon\Logger
- Abstract class Phalcon\Logger\Adapter
- Class Phalcon\Logger\Adapter\File
- Class Phalcon\Logger\Adapter\Firephp
- Class Phalcon\Logger\Adapter\Stream
- Class Phalcon\Logger\Adapter\Syslog
- Interface Phalcon\Logger\AdapterInterface
- Class Phalcon\Logger\Exception
- Abstract class Phalcon\Logger\Formatter
- Interface Phalcon\Logger\FormatterInterface
- Class Phalcon\Logger\Item
- Class Phalcon\Logger\Multiple
- Class Phalcon\Mvc\Application
- Class Phalcon\Mvc\Application\Exception
- Abstract class Phalcon\Mvc\Collection
- Abstract class Phalcon\Mvc\Collection\Behavior
- Class Phalcon\Mvc\Collection\Behavior\SoftDelete
- Class Phalcon\Mvc\Collection\Behavior\Timestampable
- Interface Phalcon\Mvc\Collection\BehaviorInterface
- Class Phalcon\Mvc\Collection\Document
- Class Phalcon\Mvc\Collection\Exception
- Class Phalcon\Mvc\Collection\Manager
- Interface Phalcon\Mvc\Collection\ManagerInterface
- Interface Phalcon\Mvc\CollectionInterface
- Abstract class Phalcon\Mvc\Controller
- Interface Phalcon\Mvc\ControllerInterface
- Class Phalcon\Mvc\Dispatcher
- Class Phalcon\Mvc\Dispatcher\Exception
- Interface Phalcon\Mvc\DispatcherInterface
- Interface Phalcon\Mvc\EntityInterface
- Class Phalcon\Mvc\Micro
- Class Phalcon\Mvc\Micro\Collection
- Interface Phalcon\Mvc\Micro\CollectionInterface
- Class Phalcon\Mvc\Micro\Exception
- Class Phalcon\Mvc\Micro\LazyLoader
- Interface Phalcon\Mvc\Micro\MiddlewareInterface
- Abstract class Phalcon\Mvc\Model
- Abstract class Phalcon\Mvc\Model\Behavior
- Class Phalcon\Mvc\Model\Criteria
- Interface Phalcon\Mvc\Model\CriteriaInterface
- Class Phalcon\Mvc\Model\Exception
- Class Phalcon\Mvc\Model\Manager
- Interface Phalcon\Mvc\Model\ManagerInterface
- Class Phalcon\Mvc\Model\Message
- Interface Phalcon\Mvc\Model\MessageInterface
- Abstract class Phalcon\Mvc\Model\MetaData
- Interface Phalcon\Mvc\Model\MetaDataInterface
- Class Phalcon\Mvc\Model\Query
- Interface Phalcon\Mvc\Model\QueryInterface
- Class Phalcon\Mvc\Model\Relation
- Interface Phalcon\Mvc\Model\RelationInterface
- Interface Phalcon\Mvc\Model\ResultInterface
- Abstract class Phalcon\Mvc\Model\Resultset
- Abstract class Phalcon\Mvc\Model\Validator
- Interface Phalcon\Mvc\Model\ResultsetInterface
- Class Phalcon\Mvc\Model\Row
- Class Phalcon\Mvc\Model\Transaction
- Interface Phalcon\Mvc\Model\TransactionInterface
- Class Phalcon\Mvc\Model\ValidationFailed
- Interface Phalcon\Mvc\ModelInterface
- Interface Phalcon\Mvc\ModuleDefinitionInterface
- Class Phalcon\Mvc\Router
- Class Phalcon\Mvc\Router\Annotations
- Class Phalcon\Mvc\Router\Exception
- Class Phalcon\Mvc\Router\Group
- Interface Phalcon\Mvc\Router\GroupInterface
- Class Phalcon\Mvc\Router\Route
- Interface Phalcon\Mvc\Router\RouteInterface
- Interface Phalcon\Mvc\RouterInterface
- Class Phalcon\Mvc\Url
- Class Phalcon\Mvc\Url\Exception
- Interface Phalcon\Mvc\UrlInterface
- Class Phalcon\Mvc\User\Component
- Class Phalcon\Mvc\User\Module
- Class Phalcon\Mvc\User\Plugin
- Class Phalcon\Mvc\View
- Abstract class Phalcon\Mvc\View\Engine
- Interface Phalcon\Mvc\View\EngineInterface
- Class Phalcon\Mvc\View\Exception
- Class Phalcon\Mvc\View\Simple
- Interface Phalcon\Mvc\ViewBaseInterface
- Interface Phalcon\Mvc\ViewInterface
- Abstract class Phalcon\Paginator\Adapter
- Class Phalcon\Paginator\Adapter\Model
- Class Phalcon\Paginator\Adapter\NativeArray
- Class Phalcon\Paginator\Adapter\QueryBuilder
- Interface Phalcon\Paginator\AdapterInterface
- Class Phalcon\Paginator\Exception
- Class Phalcon\Queue\Beanstalk
- Class Phalcon\Queue\Beanstalk\Job
- Final class Phalcon\Registry
- Class Phalcon\Security
- Class Phalcon\Security\Exception
- Abstract class Phalcon\Session
- Abstract class Phalcon\Session\Adapter
- Interface Phalcon\Session\AdapterInterface
- Class Phalcon\Session\Bag
- Interface Phalcon\Session\BagInterface
- Class Phalcon\Session\Exception
- Class Phalcon\Tag
- Class Phalcon\Tag\Exception
- Abstract class Phalcon\Tag\Select
- Abstract class Phalcon\Text
- Abstract class Phalcon\Translate
- Abstract class Phalcon\Translate\Adapter
- Class Phalcon\Translate\Adapter\Csv
- Class Phalcon\Translate\Adapter\Gettext
- Class Phalcon\Translate\Adapter\NativeArray
- Interface Phalcon\Translate\AdapterInterface
- Class Phalcon\Translate\Exception
- Class Phalcon\Validation
- Class Phalcon\Validation\Exception
- Class Phalcon\Validation\Message
- Class Phalcon\Validation\Message\Group
- Interface Phalcon\Validation\MessageInterface
- Abstract class Phalcon\Validation\Validator
- Class Phalcon\Validation\Validator\Alnum
- Class Phalcon\Validation\Validator\Alpha
- Class Phalcon\Validation\Validator\Between
- Class Phalcon\Validation\Validator\Confirmation
- Class Phalcon\Validation\Validator\Digit
- Class Phalcon\Validation\Validator\Email
- Class Phalcon\Validation\Validator\ExclusionIn
- Class Phalcon\Validation\Validator\File
- Class Phalcon\Validation\Validator\Identical
- Class Phalcon\Validation\Validator\InclusionIn
- Class Phalcon\Validation\Validator\Numericality
- Class Phalcon\Validation\Validator\PresenceOf
- Class Phalcon\Validation\Validator\Regex
- Class Phalcon\Validation\Validator\StringLength
- Class Phalcon\Validation\Validator\Uniqueness
- Class Phalcon\Validation\Validator\Url
- Interface Phalcon\Validation\ValidatorInterface
- Class Phalcon\Version
- 參考手冊
- 安裝(Installation)
- 教程 1:讓我們通過例子來學習(Tutorial 1: Let’s learn by example)
- 教程 2:Introducing INVO(Tutorial 2: Introducing INVO)
- 教程 3: Securing INVO
- 教程 4: Using CRUDs
- 教程 5: Customizing INVO
- 教程 6: Vkuró
- 教程 7:創建簡單的 REST API(Tutorial 7: Creating a Simple REST API)
- 示例列表(List of examples)
- 依賴注入與服務定位器(Dependency Injection/Service Location)
- MVC 架構(The MVC Architecture)
- 使用控制器(Using Controllers)
- 使用模型(Working with Models)
- 模型元數據(Models Meta-Data)
- 事務管理(Model Transactions)
- Phalcon 查詢語言(Phalcon Query Language (PHQL))
- 緩存對象關系映射(Caching in the ORM)
- 對象文檔映射 ODM (Object-Document Mapper)
- 使用視圖(Using Views)
- 視圖助手(View Helpers)
- 資源文件管理(Assets Management)
- Volt 模版引擎(Volt: Template Engine)
- MVC 應用(MVC Applications)
- 路由(Routing)
- 調度控制器(Dispatching Controllers)
- 微應用(Micro Applications)
- 使用命名空間(Working with Namespaces)
- 事件管理器(Events Manager)
- Request Environment
- 返回響應(Returning Responses)
- Cookie 管理(Cookies Management)
- 生成 URL 和 路徑(Generating URLs and Paths)
- 閃存消息(Flashing Messages)
- 使用 Session 存儲數據(Storing data in Session)
- 過濾與清理(Filtering and Sanitizing)
- 上下文編碼(Contextual Escaping)
- 驗證(Validation)
- 表單(Forms)
- 讀取配置(Reading Configurations)
- 分頁(Pagination)
- 使用緩存提高性能(Improving Performance with Cache)
- 安全(Security)
- Encryption/Decryption
- 訪問控制列表 ACL(Access Control Lists ACL)
- 多語言支持(Multi-lingual Support)
- Universal Class Loader
- 日志記錄(Logging)
- 注釋解析器(Annotations Parser)
- 命令行應用(Command Line Applications)
- 隊列(Queueing)
- 數據庫抽象層(Database Abstraction Layer)
- 國際化(Internationalization)
- 數據庫遷移(Database Migrations)
- 調試應用程序(Debugging Applications)
- Phalcon 開發工具(Phalcon Developer Tools)
- 提高性能:下一步該做什么?(Increasing Performance: What’s next?)
- 單元測試(Unit testing)
- 授權(License)