Kettle¶
As of version 4.0.1, the Pop PHP Framework incorporates a CLI-based help script called
kettle
. It allows a user to quickly build the scaffolding for an application and
manage database functions from the command line.
Application Scaffolding¶
By running the following command, you can set up the basic files and folders required to run an application:
$ ./kettle app:init [--web] [--api] [--cli] <namespace>
The <namespace>
parameter is the namespace of your application, for example MyApp
.
The optional parameters of --web
, --api
, and --cli
will create the related files
and folders to run the application as a normal web application, an API-driven web
application, a CLI-driven console application or any combination thereof.
After the application files and folders are copied over, you will be asked if you would like to configure a database. Follow those steps to configure a database and create the database configuration file.
Database Management¶
Once the application is initialized, you can manage the database by using the database and migration commands.
./kettle db:config Configure the database
./kettle db:test Test the database connection
./kettle db:seed Seed the database with data
./kettle db:reset Reset the database with original seed data
./kettle db:clear Clear the database of all data
./kettle migrate:create <class> Create new database migration
./kettle migrate:run [<steps>] Perform forward database migration
./kettle migrate:rollback [<steps>] Perform backward database migration
./kettle migrate:reset Perform complete rollback of the database
You can create the initial database migration that would create the tables by running the command:
$ ./kettle migrate:create <class>
Where the <class>
is the base class name of the migration class that will be created.
From there, you can populate the initial migration class with the initial schema:
<?php
use Pop\Db\Sql\Migration\AbstractMigration;
class MyNewMigration extends AbstractMigration
{
public function up()
{
$schema = $this->db->createSchema();
$schema->create('users')
->int('id', 16)->increment()
->varchar('username', 255)
->varchar('password', 255)
->primary('id');
$this->db->query($schema);
}
public function down()
{
$schema = $this->db->createSchema();
$schema->drop('users');
$this->db->query($schema);
}
}
Then by running the command:
$ ./kettle migrate:run
it will run the initial migration and create the users
table, which can then been seeded,
as shown below. You can write your own seed files under the /database/seeds
folder. An
example be:
<?php
use Pop\Db\Adapter\AbstractAdapter;
use Pop\Db\Sql\Seeder\AbstractSeeder;
class DatabaseSeeder extends AbstractSeeder
{
public function run(AbstractAdapter $db)
{
$sql = $db->createSql();
$sql->insert('users')->values([
'username' => 'testuser',
'password' => '12test34',
'email' => 'test@test.com'
]);
$db->query($sql);
}
}
Then running the command:
$ ./kettle db:seed
will execute any seed files in the seeds
folder and populate the database with the initial data.
Seeding with SQL files
Alternatively, you can place SQL files with the extension .sql
in the /database/seeds
folder
and they will be executed when you run the ./kettle db:seed
command.
The Web Server¶
A simple simple way to run PHP’s built-in web-server is also provided by running the command:
$ ./kettle serve [--host=] [--port=] [--folder=]
This is for development environments only and it is strongly advised against using the built-in web server in a production environment in any way.