1. Go to this page and download the library: Download moorexa/fatapi 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/ */
/**
* @package MustBeAuthorized
* @author Amadi Ifeanyi <amadiify.com>
*/
class MustBeAuthorized implements MiddlewareInterface
{
/**
* @var string $authorizationToken
*
* You should generate a new token from the CLI and update authorizationToken with it
* By default, the system would auto generate one and load the request with it which is not the best
* use 'php fatapi make:token {unique name}' to generate and update $authorizationToken
*/
public $authorizationToken = '388b77473d46a13724192ae7735219a2ecae7a1b';
...
use Lightroom\Socket\SocketClient;
// create connectionn
$socket = new SocketClient('0.0.0.0', '8082');
// you can queue more than one request
$socket->queue('meta.api', json_encode([
'meta' => [
'service' => 'user',
'method' => 'all'
],
'header' => [],
'method' => 'get',
'version' => 'v1',
'signature' => '8337sijdfu',
'query' => [
'limit' => 20,
]
]));
// send all queues now
$socket->send();
namespace Resources\Student\v1\Model;
use Engine\RequestData;
use Engine\{Interfaces\ModelInterface, DBMS, Table, ModelHelper};
/**
* @package Test Model
* @author Amadi Ifeanyi <amadiify.com>
*/
class Test implements ModelInterface
{
/**
* This 'ModelHelper' trait contains the fillable method and DB method.
*/
use ModelHelper;
/**
* @var int $id
* This is significant to your model class. It gets its value when two things happens
* 1. The system encounters x-meta-id in the request header
* 2. The POST body sent contains a key 'id' along side a number as its value
*/
public $id = 0;
....
}
namespace Resources\Student\v1;
/**
* @method PostStudent Init
* @param Request $request
* @param Response $response
* @return void
*
* @start.doc
*
* .. Your documentation content goes in here.
*
*/
public function Init(Request $request, Response $response) : void
{
// our post data may contain
// username, password, etc
// next we just push that data to our test model and then run any of the
// crud operations
$model = $request->useModel(Model\Test::class);
// this reads (Resources\Student\v1\Model\Test)
// next we can run any operation that's avaliable in this model class
// eg
$model->Update(); // update a record
// sample response
$response->success('It works!');
}
namespace Resources\Student\v1;
/**
* @method PostStudent Init
* @param Request $request
* @param Response $response
* @return void
*
* @start.doc
*
* .. Your documentation content goes in here.
*
*/
public function Init(Request $request, Response $response) : void
{
// our id is part of the request
// sample response
$response->success('It works!', [
'id' => $request->id
]);
}
php fatapi make:dbms sessionConnection
/**
* @method DBMS sessionConnection
* @param string $table
* @return DriverInterface|
*/
public static function sessionConnection(string $table = '')
{
// connection name
$connectionName = '';
// get connection
$connection = self::CreateConnection($connectionName);
// has table
return $table != '' ? self::ConnectToTable($connection, $table) : $connection;
}
/**
* @method DBMS sessionConnection
* @param string $table
* @return DriverInterface|
*/
public static function sessionConnection(string $table = '')
{
// connection name
$connectionName = 'new-db';
// get connection
$connection = self::CreateConnection($connectionName);
// has table
return $table != '' ? self::ConnectToTable($connection, $table) : $connection;
}
namespace Resources\Student\v1\Model;
...
/**
* @package Test Model
* @author Amadi Ifeanyi <amadiify.com>
*/
class Test implements ModelInterface
{
...
/**
* @var string $DBMSConnection
* This is a connection method name from our Engine\DBMS class and
* it defaults to this model, to be accessed via
* - $this->DB()
* or
* - $this->DB(TABLE NAME)
* Where TABLE NAME is a constant value from Engine\Table class or just a regular name.
*
* You can also make queries to other connections via accessing them through
* - DBMS::ConnectionName()
* Where 'ConnectionName' is a connection method from our Engine\DBMS class
*/
private $DBMSConnection = 'sessionConnection';
}
namespace Resources\Student\v1\Model;
use Engine\RequestData;
use Engine\{Interfaces\ModelInterface, DBMS, Table, ModelHelper};
/**
* @package Test Model
* @author Amadi Ifeanyi <amadiify.com>
*/
class Test implements ModelInterface
{
/**
* This 'ModelHelper' trait contains the fillable method and DB method.
*/
use ModelHelper;
/**
* @var int $id
* This is significant to your model class. It gets its value when two things happens
* 1. The system encounters x-meta-id in the request header
* 2. The POST body sent contains a key 'id' along side a number as its value
*/
public $id = 0;
// username
public $Username;
// password
private $Password;
// then add the fillable method
/**
* @method ModelInterface Fillable
* @param RequestData $data
* @return void
*
* Has data that can be populated to the class
*/
public function Fillable(RequestData $data) : void
{
// set the username
$this->Username = $data->username;
// set the password
$this->Password = $data->password;
}
....
}
use Messaging\Emails\EmailSender;
// send welcome message
EmailSender::sendWelcomeMessage(
// data to replace placeholders with
[
'name' => 'fatapi' // this would replace {name} with fatapi
],
// extra option
[
'background' => true, // this would send the mail in the background
'subject' => '', // (optional) but can help change the mail subject
'from' => '', // (optional) but can help change the mail sender
'to' => '[email protected]' // this is the receiver email address
],
// (optional callback)
function($email)
{
// now you have the Symfony\Component\Mime\Email in $email to work with
// let try attaching a file
$email->attach(fopen('/path/to/documents/contract.doc', 'r'));
}
);
php assist start-rabbitmq-worker
namespace Messaging;
use Messaging\Emails\EmailSender;
/**
* @package EmailAlerts
* @author Amadi Ifeanyi <amadiify.com>
*
* This alert is meant for internal email notifications
*/
class EmailAlerts
{
/**
* @var string $sendTo
*/
public static $sendTo = '[email protected]'; // destination address
/**
* @var bool $sendInBackground
*
* To get the email to send in the background, ensure rabbitmq is running and rabbitmq client is running
*/
public static $sendInBackground = true;
/**
* @method EmailAlerts newSubscriberAlert
* @param array $data
* @return void
*/
public static function newSubscriberAlert(array $data = [])
{
EmailSender::newSubscriberAlert($data, [
'background' => self::$sendInBackground,
'to' => self::$sendTo,
'subject' => 'You have a new email subscriber'
]);
}
}
// now we can just call
EmailAlerts::newSubscriberAlert();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.