Reproducible Tests
<?php
use Phalcon\Di\FactoryDefault;
use Phalcon\Db\Adapter\Pdo\Mysql;
$container = new FactoryDefault();
$container->setShared(
'db',
function () {
return new Mysql(
[
'host' => '127.0.0.1',
'username' => 'root',
'password' => '',
'dbname' => 'test',
'charset' => 'utf8',
]
);
}
);
$result = $container['db']->query('SELECT * FROM customers');
Include models and controllers as part of the test:
<?php
use Phalcon\Di\FactoryDefault;
use Phalcon\Mvc\Application;
use Phalcon\Mvc\Controller;
use Phalcon\Mvc\Model;
$container = new FactoryDefault();
// other services
$application->setDI($container);
class IndexController extends Controller
{
public function indexAction() {
/* your content here */
}
}
class Users extends Model
{
}
$response = $application->handle(
$_SERVER["REQUEST_URI"]
);
echo $response->getContent();
<?php
use Phalcon\Di;
use Phalcon\Db\Adapter\Pdo\Mysql as Connection;
use Phalcon\Events\Manager as EventsManager;
use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Manager as ModelsManager;
use Phalcon\Mvc\Model\Metadata\Memory as ModelsMetaData;
$eventsManager = new EventsManager();
$container = new Di();
$connection = new Connection(
[
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'test',
]
);
$eventsManager->attach(
'db:beforeQuery',
function ($event, $connection) {
echo $connection->getSqlStatement(), '<br>' . PHP_EOL;
}
);
$container['db'] = $connection;
$container['modelsManager'] = new ModelsManager();
$container['modelsMetadata'] = new ModelsMetadata();
if (true !== $connection->tableExists('user', 'test')) {
$connection->execute(
'CREATE TABLE user (id integer primary key auto_increment, email varchar(120) not null)'
);
}
class User extends Model
{
public $id;
public $email;
public static function createNewUserReturnId()
{
$newUser = new User();
$newUser->email = 'test';
if (false === $newUser->save()) {
return false;
}
return $newUser->id;
}
}
echo User::createNewUserReturnId();