私はツールボックスを拡張し、さらにいくつかのトリックを学ぼうとしている初心者の開発者のようなものです。最近、「装飾」と呼ばれる Python のパターンに出くわしました。既存の PHP コード ベースがあるので、これを PHP で実装できるかどうか、またはどのように実装できるか疑問に思っていました。
ここに私が意味することの短い例があります:
import time
def log_calls(func):
def wrapper(*args, **kwargs):
now = time.time()
print("Calling {0} with {1} and {2}".format(
func.__name__,
args,
kwargs
))
return_value = func(*args, **kwargs)
print("Executed {0} in {1}ms".format(
func.__name__,
time.time() - now
))
return return_value
return wrapper
@log_calls
def test1(a,b,c):
print("\ttest1 called")
@log_calls
def test2(a,b):
print("\ttest2 called")
@log_calls
def test3(a,b):
print("\ttest3 called")
time.sleep(1)
test1(1,2,3)
test2(4,b=5)
test3(6,7)
必ずしも構文的にきれいである必要はありません。すべての言語にはニュアンスがあり、PHP がその構文をサポートしていないことを理解しています。しかし、できるだけ少ないコードを書き直しながら、同じ効果を達成できるようにしたいと考えています。