
temporal 官网示例
python:
@workflow.defn class SleepForDaysWorkflow: # Send an email every 30 days, for the year @workflow.run async def run(self) -> None: for i in range(12): # Activities have built-in support for timeouts and retries! await workflow.execute_activity( send_email, start_to_close_timeout=timedelta(secOnds=10), ) # Sleep for 30 days (yes, really)! await workflow.sleep(timedelta(days=30)) ruby:
# Send an email every 30 days, for the year class SleepForDaysWorkflow < Temporalio::Workflow::Definition def execute 12.times do # Activities have built-in support for timeouts and retries! Temporalio::Workflow.execute_activity( SendEmailActivity, start_to_close_timeout: 10 ) # Sleep for 30 days (yes, really)! Temporalio::Workflow.sleep(30 * 24 * 60 * 60) end end end C#:
[Workflow] public class SleepForDaysWorkflow { // Send an email every 30 days, for the year [WorkflowRun] public async Task RunAsync() { for (int i = 0; i < 12; i++) { // Activities have built-in support for timeouts and retries! await Workflow.ExecuteActivityAsync( (Activities act) => act.SendEmail(), new() { StartToCloseTimeout = TimeSpan.FromSeconds(10) }); // Sleep for 30 days (yes, really)! await Workflow.DelayAsync(TimeSpan.FromDays(30)); } } } PHP:
class SleepForDaysWorkflow implements SleepForDaysWorkflowInterface { // Send an email every 30 days. public function sleepForDays(): void { for ($i = 0; $i < 12; $i++) { // Activities have timeouts, and will be retried by default! $this->sendEmailActivity->sendEmail(); // Sleep for 30 days (yes, really)! Workflow::sleep(30 * 24 * 60 * 60) } } } 感觉对于 java 程序员 php 的心智负担好小啊
1 xtreme1 10 天前 这几段代码首先语义上就不等价啊. php 的 async call 是配在框架里面了. |
2 jybox 10 天前 @xtreme1 是等价的,几种语言都是做到框架里的(不可能真的 sleep 30 天) 但我没看出来 PHP 优雅在哪里,感觉都差不多,PHP 稍微短一点是因为没写 timeout 而且省略了 sendEmailActivity 这个对象(显然这不是框架内置的)。 |
3 florentino OP @xtreme1 所以我说感觉嘛,我一眼看过去就知道是啥意思, 不像其他语言我还得去扒拉特殊语 法 |
4 ragnaroks 10 天前 csharp 部分,ExecuteActivityAsync 这个方法的签名设计确实不行,不过很多涉及到时间段的部分总是 TimeSpan 确实也绷不住 |
5 XIVN1987 10 天前 上面三个示例都有指定 10s timeout ,,PHP 的版本没指定啊,,这功能不完全一样吧 |
![]() | 6 XIVN1987 10 天前 python 的实现为啥不用继承,,而是使用装饰器?? |
7 florentino OP @XIVN1987 #6 不知道啊 官网的写法 ![]() |
8 ccc008 10 天前 php 最不爽的就是$符 |
11 Smileh 10 天前 |
12 cj323 10 天前 via Android 只写过 py 和 c#。纯美感上我认同这几个示例里 PHP 看着更舒服点。其他几个除 ruby 外显得有点繁杂。 |
14 maigebaoer 10 天前 via Android Java 程序员可以无缝切到 PHP |
15 chendy 10 天前 我也不知道咋回事 看到 PHP 仨字,右手小指就放在了 shift 上,食指放在了 4 上 |
16 lscho 10 天前 说实话,php 除了$符号,其他的语法真的足够简洁优雅 |
17 urlk 10 天前 没事, java 也支持 $ 做变量开头 |
18 est 10 天前 |
19 CodeCodeStudy 10 天前 ruby 一大堆的 end |
20 passive 10 天前 via Android 要不是因为 cpan ,早就想从 Perl 转到 PHP 。当然,现在只剩 Python 了 |
22 lvsp95 10 天前 @maigebaoer #12 从 PHP 切到 Java 也很简单 |
24 liKeYunKeji 10 天前 php\Javascript\java 都很相似。 |
25 jimmzhou 10 天前 好多年没写 php 了 看到 php 的代码 感觉好亲切 |
26 wogogoing PRO op 怎么没把 Go 的贴出来呀。哈哈哈。 |
27 florentino OP @wogogoing 因为 go 我也能看懂 ![]() |
28 florentino OP @ccc008 $符号我一看就知道是变量,跟 shell 一样 |
29 wogogoing PRO @florentino 哈哈哈哈 不错不错 |
30 mx1700 9 天前 看到 PHP 就感觉到左手小拇指有点抽筋 |
31 NewYear 9 天前 PHP 最大的问题不是$,而是设计一塌糊涂,例如我要处理一个字符串,我要把这个字符串放在第几个参数?每个处理函数还不一样。 这导致要单独记忆,很多人都是懂多种语言,没谁想单独为某个语言记一些垃圾玩意。 另外就是 JS 这种可以链式调用,自动补全啥的都很优秀,php 这种……语法也不优美,函数套函数,函数套函数,眼睛都看不清楚引号和括号是哪个函数的(当年我写 vb 也有这个问题,烦) 这也是为什么很多人说别学 C#,学了之后学不会其他语言了,因为设计是真的好,由奢入俭难。 |
33 buffzty 7 天前 因为 php5 早期大多数代码是面向过程跟 c 语言一样.从业人员多菜鸟也多 c 语言的写法很难不写出屎山. php7 之后写的人基本用纯面向对象写法 跟 java 语法几乎一致 连 jar 包都抄过去了 php 里叫 phar. 假如以前 php 的是 js,现在的 php 就是 ts |
34 realpg PRO @buffzty #33 php 的后期版本维护者, 以及主流大框架, 都非得把 php 整成 java 那样 是我不爱用的根本原因 本身就是轻量快捷开发优势语言 你往这个方向走 我干啥不去用 java 去啊! java 什么都多 如果 php 框架能往 ruby on rails 那个方向走 还是很有价值的 |
35 fuchish112 7 天前 #34 语法糖哐哐输出,异步迟迟不出来,真的,老外脑回路不一样 |
36 ltux 7 天前 因为写得少。 |
37 lizy0329 7 天前 纯粹是 [技术品味] 差,而已 |
38 guanzhangzhang 7 天前 怎么不给 golang 的放出来:``` // Send an email every 30 days, for the year func SleepForDaysWorkflow(ctx workflow.Context) error { for i := range 12 { // Activities have built-in support for timeouts and retries! _ = workflow.ExecuteActivity(ctx, SendEmail).Get(ctx, nil) // Sleep for 30 days (yes, really)! _ = workflow.Sleep(ctx, time.Hour*24*30) } } ``` |
39 GabrielGarcia 7 天前 已经很久没有看到关于 php 的帖子了,从一开始的 tp3.2-->tp5.1-->ci-->gozero/hertz/kitex 。哈哈哈 |
40 coderzhangsan 6 天前 最后一句话才揭示了主题,因为现在的 php 跟 java 一样,都是纯 OOP 编程,设计模式以及相关语法几乎一样,当然他们之间也是有区别的,比如 php 只支持单继承/多态,重载的实现方式不一样,看到跟自己主语言设计相差较小的,自然而然就会觉得亲切,比如我最近在搞 python ,那 oop 语法,用 php 眼光来看,就是不伦不类。 |