1. Go to this page and download the library: Download devtheorem/phaster library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
devtheorem / phaster example snippets
use DevTheorem\Phaster\{Entities, Prop, QueryOptions};
class Users extends Entities
{
// Return the table to insert/update/delete/select from.
// If not implemented, the class name will be used as the table name.
protected function getTableName(): string
{
return 'users';
}
// Return an array which maps properties to writable column names. Returns an
// empty array by default, so no properties will be writable if not implemented.
protected function getMap(): array
{
return [
'username' => 'uname',
'firstName' => 'fname',
'lastName' => 'lname',
'isDisabled' => 'disabled',
'role' => [
'id' => 'role_id',
],
];
}
// Return a list of `Prop` objects, which map properties to readable columns and/or values,
// and enable setting a type to cast the column value to, or defining a virtual property
// which depends on other columns. See the Prop constructor for the full list of parameters
// that can be set. Returns an empty array by default.
protected function getSelectProps(): array
{
return [
new Prop('id', col: 'u.user_id'),
new Prop('username', col: 'u.uname'),
new Prop('firstName', col: 'u.fname'),
new Prop('lastName', col: 'u.lname'),
new Prop('isDisabled', col: 'u.disabled', type: 'bool'),
new Prop('role.id', col: 'u.role_id'),
new Prop('role.name', col: 'r.role_name'),
];
}
// Return a SELECT SQL query (without a WHERE clause) in order to join other tables when
// selecting data. If not implemented, mapped columns will be selected from the table
// returned by getTableName().
protected function getBaseQuery(QueryOptions $options): string
{
return "SELECT {$options->getColumns()}
FROM users u
INNER JOIN roles r ON r.role_id = u.role_id";
}
// Set the default column/direction for sorting selected results. If not implemented,
// results will be sorted by the id property in ascending order by default.
protected function getDefaultSort(): array
{
return ['username' => 'asc'];
}
}
use DevTheorem\PeachySQL\QueryBuilder\SqlParams;
// ...
protected function getBaseSelect(QueryOptions $options): SqlParams
{
$sql = "WITH num_orders AS (
SELECT user_id, COUNT(*) as orders
FROM Orders
WHERE category_id = ?
GROUP BY user_id
)
SELECT {$options->getColumns()}
FROM Users u
INNER JOIN num_orders n ON n.user_id = u.user_id";
return new SqlParams($sql, [321]);
}
// ...
use My\DatabaseFactory;
use DevTheorem\Phaster\{Entities, EntitiesFactory};
class MyEntitiesFactory implements EntitiesFactory
{
public function createEntities($class): Entities
{
return new $class(DatabaseFactory::getDb());
}
}
use DevTheorem\Phaster\RouteHandler;
$phaster = new RouteHandler(new MyEntitiesFactory());
$app->get('/users', $phaster->search(Users::class));
$app->get('/users/{id}', $phaster->getById(Users::class));
$app->post('/users', $phaster->insert(Users::class));
$app->put('/users/{id}', $phaster->update(Users::class));
$app->patch('/users/{id}', $phaster->patch(Users::class));
$app->delete('/users/{id}', $phaster->delete(Users::class));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.