PHP code example of sagittaracc / php-python-decorator
1. Go to this page and download the library: Download sagittaracc/php-python-decorator 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/ */
sagittaracc / php-python-decorator example snippets
use Sagittaracc\PhpPythonDecorator\Decorator;
class Calc
{
use Decorator;
#[Timer]
function sum($a, $b)
{
sleep(1);
return $a + $b;
}
}
$calc = new Calc();
echo call_decorator_func_array([$calc, 'sum'], [1, 2]); // Total execution: 1.00034234 ms; Result: 3
$timerOnSum = (new Timer)->wrapper(fn($a, $b) => $calc->sum($a, $b));
echo $timerOnSum(1, 2); // Total execution: 1.00034234 ms; Result: 3
use Sagittaracc\PhpPythonDecorator\Decorator;
use Sagittaracc\PhpPythonDecorator\modules\generics\aliases\T;
use Sagittaracc\PhpPythonDecorator\modules\validation\core\validators\ArrayOf;
#[T]
class Box
{
use Decorator;
#[ArrayOf(T::class)]
public $items;
public function addItem(#[T] $item)
{
$this->items[] = $item;
}
}
$box = new Box();
$box(Pen::class); // new Box<Pen>();
call_decorator_func_array([$box, 'addItem'], [new Pencil]); // throws a GenericError
use Sagittaracc\PhpPythonDecorator\Decorator;
use Sagittaracc\PhpPythonDecorator\tests\examples\Progress;
use Sagittaracc\PhpPythonDecorator\tests\validators\Length;
use Sagittaracc\PhpPythonDecorator\tests\validators\SerializeOf;
use Sagittaracc\PhpPythonDecorator\tests\validators\In;
use Sagittaracc\PhpPythonDecorator\tests\validators\LessThan;
use Sagittaracc\PhpPythonDecorator\tests\validators\UInt8;
class Progress
{
use Decorator;
#[UInt8]
public $max;
#[UInt8]
#[LessThan('max')]
public $pos;
#[In('progress', 'finish', 'aborted')]
public $status;
#[Length(32)]
public string $caption;
}
$progress = new Progress();
set_decorator_prop($progress, 'max', 255); // max uint8 - 255
set_decorator_prop($progress, 'pos', 100); // should be less than max
set_decorator_prop($progress, 'status', 'progress'); // status is one of possible cases (progress, finish or aborted)
set_decorator_prop($progress, 'caption', 'in progress ...'); // just a string (max length is 32)
use Sagittaracc\PhpPythonDecorator\Decorator;
use Sagittaracc\PhpPythonDecorator\modules\rpc\core\Rpc;
#[Rpc]
class Controller
{
use Decorator;
public function sum($a, $b)
{
return $a + $b;
}
}
$requestBody = file_get_contents('php://input');
$controller = new Controller();
$controller($requestBody);
use Sagittaracc\PhpPythonDecorator\Decorator;
use Sagittaracc\PhpPythonDecorator\modules\console\core\Console;
class Controller
{
use Decorator;
#[Console('hello')]
function greetingPerson($name)
{
return "Hello, $name";
}
}
(new Console('hello'))->setParameters(['name' => 'Yuriy'])->getMethod(Controller::class)->run();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.