j-angnoe / php-bridge
用于原型的PHP和JavaScript桥梁
dev-master
2022-08-19 13:33 UTC
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2024-09-19 17:46:34 UTC
README
PHP Bridges 允许您在不处理路由和参数打包的情况下,通过JavaScript与指定的PHP对象交互。减少编写样板代码和框架配置的时间,更多地专注于开发您的想法。
一个示例PHP对象
class MyController { function performSomeAction($argument1, $argument2) { // ... } }
在JavaScript中与此对象交互
var result = await api.performSomeAction(arg1, arg2);
通过添加
PhpBridge\Bridge::serve(MyController::class)
用法
PhpBridge 是一个库,并附带一个可执行文件,可以快速启动本地原型。
使用phpbridge可执行文件
PhpBridge 将在可用端口上启动一个web服务器,提供您指定的文件(或目录)。它将自动加载PhpBridge并提供 bridge
函数,因此您可以编写:它将自动
./vendor/bin/phpbridge file.php [--port=1234] [--no-browser]
// file.php <?php bridge(MyController::class); class MyController { function fn() { } } ?> <button onclick="execute()">Execute</button> <script> async function execute() { var result = await api.fn(); alert(result); } </script>
使用库
<?php class MyController { function fn() { } } $bridge = PhpBridge\Bridge::to(Mycontroller); $bridge->interrupt(); // Will write <script>window.api = .... </script> echo $bridge->output('script'); ?> <button onclick="execute()">Execute</button> <script> async function execute() { var result = await api.fn(); alert(result); } </script>
安装
通过composer
composer require j-angnoe/php-bridge
API
PhpBridge\Bridge::to($targetClass) - 创建一个桥梁实例并向它提供目标类(类名或对象)
PhpBridge\Bridge::interrupt() - 允许PHP Bridge中断当前脚本的流程以处理API调用。在开始输出之前调用interrupt。
PhpBridge\Bridge::output($flags) - 获取目标类的JavaScript客户端副本。
特性
PhpBridge\Bridge 使用客户端/csrf方法保护调用。这是为了防止任何非浏览器客户端通过桥梁与您的代码交互。为了从这一额外的安全层中受益,您应该确保在调用interrupt之前启动PHP。phpbridge二进制文件会为您做这件事。
JavaScript客户端需要浏览器具有 fetch
方法。
示例
可以在 ./examples/ 中找到