Fusio Api Action 之PHP相关

fusio1年前 (2024)更新 admin
708 0

PHP包括:PHP Sandbox,PHP Processor

PHP Sandbox

提供了一种编写 PHP 代码的简单方法,该代码可直接在服务器上执行。可以快速的编写一个api用于测试等。

Fusio Api Action 之PHP相关

代码

<?php
/**
 * @var \Fusio\Engine\RequestInterface $request
 * @var \Fusio\Engine\ContextInterface $context
 * @var \Fusio\Engine\ConnectorInterface $connector
 * @var \Fusio\Engine\Response\FactoryInterface $response
 * @var \Fusio\Engine\ProcessorInterface $processor
 * @var \Fusio\Engine\DispatcherInterface $dispatcher
 * @var \Psr\Log\LoggerInterface $logger
 * @var \Psr\SimpleCache\CacheInterface $cache
 */

$id = $request->get('id'); // returns a path or query parameter
$payload = $request->getPayload(); // returns the request payload
$arguments = $request->getArguments(); // returns all available arguments as array

// returns a configured connection, in case of a SQL connection this returns a doctrine DBAL instance which you could
// now use to query the database
//$connection = $connector->getConnection('mysql');

return $response->build(200, [], [
    'id' => $id,
    'uriFragments' => $arguments,
    'payload' => $payload,
]);

PHP Processor

可将PHP Sandbox的代码写入到文件,用文件路径去调用执行,功能上感觉没啥差别,完整的 API 文档

Fusio Api Action 之PHP相关

貌似源码更新了吧,官方文档中的函数并不可用,以下是我测试过的代码,完全可用。

函数源码位置:fusio/vendor/doctrine/dbal/src/Result.php

#my_test.php
#我的文件路径:/fusio/public/apps/fusio/my_test.php
<?php
/**
 * @var \Fusio\Engine\RequestInterface $request
 * @var \Fusio\Engine\ContextInterface $context
 * @var \Fusio\Engine\ConnectorInterface $connector
 * @var \Fusio\Engine\Response\FactoryInterface $response
 * @var \Fusio\Engine\ProcessorInterface $processor
 * @var \Fusio\Engine\DispatcherInterface $dispatcher
 * @var \Psr\Log\LoggerInterface $logger
 * @var \Psr\SimpleCache\CacheInterface $cache
 */

/** @var \Doctrine\DBAL\Connection $connection */
$connection = $connector->getConnection('pandian');

$count  = $connection->fetchOne('SELECT COUNT(*) FROM tbgoods');
// $result = $connection->fetchFirstColumn('SELECT * FROM tbgoods');//可用,只有一列
// $result = $connection->fetchAllKeyValue('SELECT * FROM tbgoods');//显示第一列和第二列的值
// $result = $connection->fetchNumeric('SELECT * FROM tbgoods ');//取得第一条记录
// $result = $connection->fetchAllNumeric('SELECT * FROM tbgoods');//无列名,可获取全部数据
// $result = $connection->fetchAssociative('SELECT * FROM tbgoods');//取得第一条记录
$result = $connection->fetchAllAssociative('SELECT * FROM tbgoods');//列名完整,可获取全部数据
// $result = $connection->fetchAllAssociativeIndexed('SELECT * FROM tbgoods');//ID无列名,可获取全部数据

return $response->build(200, [], [
    'totalCount' => $count,
    'entries'    => $result,
]);

Response – 200

{
  "totalCount": 1259,
  "entries": {
    "id": 318844,
    "goodscode": "012119001",
    "goodsname": "西芹",
    "BaseBarCode": "0800744"
  }
}

总结:这些Action下php的类目前看主要应用应该不是为了查询数据使用,因为查询数据的类用起来比这方便多了。

© 版权声明

相关文章