1. Go to this page and download the library: Download eatae/throwable-instruction 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/ */
eatae / throwable-instruction example snippets
try {
$instruction = new ThrowableInstruction();
$operation = new EchoOperation('Some output.');
/*
* Throwing an exception with an instruction
*/
throw new LogicException('Some message.', 0, $instruction->add($operation));
} catch (LogicException $e) {
echo $e->getMessage();
/*
* Call instructions for a specified exception
*/
Operator::followInstruction($e);
}
try {
$instruction = new ThrowableInstruction();
$operation = new EchoOperation('Some output.');
/*
* Throwing an exception with an instruction
*/
throw new LogicException('Some message.', 0, $instruction->add($operation));
} catch (LogicException $e) {
echo $e->getMessage();
} finally {
/*
* Call instructions for all exceptions
*/
if (isset($e) && is_subclass_of($e, Exception::class)) {
Operator::followInstruction($e);
}
}
class ImportantMessageOperation implements OperationInterface
{
protected string $message;
protected int $code;
public function __construct(string $message, int $code)
{
$this->message = $message;
$this->code = $code;
}
public function execute(): void
{
echo "Important: {$this->message}. Code: {$this->code}";
}
}
public function whereExceptionsAreCaught(): void
{
$object = new \stdClass();
try {
/*
* Some code...
*/
$this->item->doSomethingElse($object, $this->validator, $this->instruction);
} catch (Exception $e) {
$this->logger->log($e->getMessage(), $e->getCode());
} finally {
/*
* Call instructions for all exceptions
*/
if (isset($e) && is_subclass_of($e, Exception::class)) {
Operator::followInstruction($e);
}
}
}
public function doSomething(object $entity): void
{
if (!$this->validator->validate($entity)) {
/*
* InvalidArgumentException without instructions
*/
throw new InvalidArgumentException('Entity is not valid object');
}
}
public function doSomethingElse(object $item): void
{
if (!$this->validator->validate($item)) {
/*
* InvalidArgumentException with Notice instructions
*/
throw new InvalidArgumentException(
'Item is not valid object',
0,
$this->instruction->operation(NoticeMessageOperation::class, ['Invalid values passed'])
);
}
}
public function doSomethingImportant(object $importantItem): void
{
if (!$this->validator->validate($importantItem)) {
/*
* InvalidArgumentException with Important instructions
*/
throw new InvalidArgumentException(
'Important Item is not valid object',
0,
$this->instruction
->operation(ImportantMessageOperation::class, ['Important values are not valid', 500])
->operation(SendCriticalEmailOperation::class, ['Any message text'])
);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.