[TOC]
如果您發現了錯誤,請務必在您的問題中添加相關的可重現性信息,以便我們重現錯誤并更快地修復錯誤。如果您在Github上公開申請,請提交存儲庫地址以及問題說明。您還可以使用 [Gist](https://gist.github.com/) 發布您想要與我們分享的任何代碼。
## 創建一個小腳本
一個小的單文件腳本通常是重現問題的最佳方法:
```php
<?php
$di = new Phalcon\DI\FactoryDefault();
//Register your custom services
$di['session'] = function() {
$session = new \Phalcon\Session\Adapter\Files();
$session->start();
return $session;
};
$di['cookies'] = function() {
$cookies = new Phalcon\Http\Response\Cookies();
$cookies->useEncryption(false);
return $cookies;
};
class SomeClass extends \Phalcon\DI\Injectable
{
public function someMethod()
{
$cookies = $this->getDI()->getCookies();
$cookies->set("mycookie", "test", time() + 3600, "/");
}
}
$c = new MyClass;
$c->setDI($di);
$c->someMethod();
$di['cookies']->send();
var_dump($_SESSION);
var_dump($_COOKIE);
```
根據您的應用程序,您可以使用這些框架來創建自己的腳本并重現該錯誤:
### 數據庫
請記住向腳本添加如何注冊數據庫服務:
```php
<?php
$di = new Phalcon\DI\FactoryDefault();
$di->setShared('db', function () {
return new \Phalcon\Db\Adapter\PDO\Mysql(array(
'host' => '127.0.0.1',
'username' => 'root',
'password' => '',
'dbname' => 'test',
'charset' => 'utf8',
));
});
$result = $di['db']->query('SELECT * FROM customers');
```
### 單/多模塊應用
請記住向腳本添加如何創建 `Phalcon\Mvc\Application` 實例:
```php
<?php
$di = new \Phalcon\DI\FactoryDefault();
//other services
$app = new \Phalcon\Mvc\Application();
$app->setDi($di);
//register modules if any
echo $app->handle->getContent()
```
包括模型和控制器作為測試的一部分:
```php
<?php
$di = new \Phalcon\DI\FactoryDefault();
//other services
$app = new \Phalcon\Mvc\Application();
$app->setDi($di);
class IndexController extends Phalcon\Mvc\Controller
{
public function indexAction() {
/* your content here */
}
}
class Users extends Phalcon\Mvc\Model
{
}
echo $app->handle->getContent()
```
### 微應用
按照此結構創建腳本:
```php
<?php
$di = new \Phalcon\DI\FactoryDefault();
$app = new \Phalcon\Mvc\Micro($di);
//define your routes here
$app->handle();
```
### Dispatcher
### ORM
您可以提供自己的數據庫模式,甚至可以更好地使用任何phalcon測試[數據庫](https://github.com/phalcon/cphalcon/tree/master/unit-tests/schemas)。按照此結構創建腳本:
```php
<?php
use Phalcon\DI;
use Phalcon\Events\Manager as EventsManager;
use Phalcon\Db\Adapter\Pdo\Mysql as Connection;
use Phalcon\Mvc\Model\Manager as ModelsManager;
use Phalcon\Mvc\Model\Metadata\Memory as ModelsMetaData;
$eventsManager = new EventsManager();
$di = new DI();
$connection = new Connection(array(
"host" => "localhost",
"username" => "root",
"password" => "",
"dbname" => "test"
));
$connection->setEventsManager($eventsManager);
$eventsManager->attach('db',
function ($event, $connection) {
switch ($event->getType()) {
case 'beforeQuery':
echo $connection->getSqlStatement(), "<br>\n";
break;
}
}
);
$di['db'] = $connection;
$di['modelsManager'] = new ModelsManager();
$di['modelsMetadata'] = new ModelsMetadata();
if (!$connection->tableExists('user', 'test')) {
$connection->execute('CREATE TABLE user (id integer primary key auto_increment, email varchar(120) not null)');
}
class User extends \Phalcon\Mvc\Model
{
public $id;
public $email;
public static function myCustomUserCreator()
{
$newUser = new User();
$newUser->email = 'test';
if ($newUser->save() == false) {
return false;
}
return $newUser->id;
}
}
echo User::myCustomUserCreator();
```
- 常規
- Welcome
- 貢獻
- 生成回溯
- 測試重現
- 單元測試
- 入門
- 安裝
- Web服務器設置
- WAMP
- XAMPP
- 教程
- 基礎教程
- 教程:創建一個簡單的REST API
- 教程:V?kuró
- 提升性能
- 教程:INVO
- 開發環境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 開發工具
- Phalcon開發者工具的安裝
- Phalcon開發者工具的使用
- 調試應用程序
- 核心
- MVC應用
- 微應用
- 創建命令行(CLI)應用程序
- 依賴注入與服務定位
- MVC架構
- 服務
- 使用緩存提高性能
- 讀取配置
- 上下文轉義
- 類加載器
- 使用命名空間
- 日志
- 隊列
- 數據庫
- 數據庫抽象層
- Phalcon查詢語言(PHQL)
- ODM(對象文檔映射器)
- 使用模型
- 模型行為
- ORM緩存
- 模型事件
- 模型元數據
- 模型關系
- 模型事務
- 驗證模型
- 數據庫遷移
- 分頁
- 前端
- Assets管理
- 閃存消息
- 表單
- 圖像
- 視圖助手(標簽)
- 使用視圖
- Volt:模板引擎
- 業務邏輯
- 訪問控制列表(ACL)
- 注解解析器
- 控制器
- 調度控制器
- 事件管理器
- 過濾與清理
- 路由
- 在session中存儲數據
- 生成URL和路徑
- 驗證
- HTTP
- Cookies管理
- 請求環境
- 返回響應
- 安全
- 加密/解密
- 安全
- 國際化
- 國際化
- 多語言支持