回调函数

可将 PHP 的可调用对象作为 Python 的回调函数。使用 PyCore::fn(callable $fn) 包裹即可。

  1. $m = PyCore::import('app.user');
  2. $uuid = uniqid();
  3. $rs = $m->test_callback(PyCore::fn(function ($namespace) use ($uuid) {
  4. var_dump($namespace);
  5. return $uuid;
  6. }));
  • import app.user 导入了一个自定义 Python
  • 调用了包中的一个函数 test_callback,此函数接受一个参数为 Python Callable 对象
  • 使用 PyCore::fn() 包裹了一个 Closure 闭包对象作为回调,这里也支持函数名称字符串、对象方法的调用方式
  • 回调函数返回了一个字符串,在 test_callback 函数中会得到一个 str 类型返回值

实例

这里使用了 Python tkinter 作为例子:

  1. <?php
  2. $tkinter = PyCore::import('tkinter');
  3. $root = $tkinter->Tk();
  4. $root->title('我的窗口');
  5. $root->geometry("500x500");
  6. $root->resizable(False, False);
  7. $button = $tkinter->Button($root, text: "Click Me!!", command: PyCore::fn(function () {
  8. var_dump(func_get_args());
  9. echo 'click me!!' . PHP_EOL;
  10. }));
  11. $button->pack();
  12. $tkinter->mainloop();

PHP 作为 Tk Button 的回调函数。