저는 도구 상자를 확장하고 더 많은 트릭을 배우려는 초심자 개발자입니다. 나는 최근 Python에서 "decoration"라는 패턴을 발견했으며 기존 PHP 코드베이스를 가지고 있기 때문에 PHP에서 구현할 수 있는지 궁금합니다. 여기 PHP에서 Decorator 구조화
내가 무엇을 의미하는지에 대한 간단한 예입니다 : 그것은 반드시 구문 꽤 그렇게 될 필요가 없습니다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가 해당 구문을 지원하지 않는다는 것을 알고 있습니다. 하지만 가능한 한 적은 코드로 다시 작성하면서 동일한 효과를 얻을 수 있기를 원합니다.
그 행운하지만, 기본적으로 장식 함수를 반환하는 함수는 당신이 그렇게 할 수 있어야 PHP에서 함수를 반환 할 수 있습니다 그래서 만약 당신이 봐, 나중에 호출 할 수 있습니다 at : http://php.net/manual/fr/function.call-user-func.php. – mpm