2012-12-15 2 views
5

내가 할 데 :PHP에서 변수의 함수를 호출하는 방법은 무엇입니까?

 
$sourceElement['description'] = htmlspecialchars_decode($sourceElement['description']); 

내가 변수 이름의 중복 언급을 피하고 싶어. 나는 시도 :

 
htmlspecialchars_decode(&$sourceElement['description']); 

작동하지 않았다

 
call_user_func('htmlspecialchars_decode', &$sourceElement['description']); 

합니다. PHP에서도 가능합니까? 함수를 에 호출하면 변수에?

답변

2

그것은 기능에 따라 다름) = 진정한 게으른 프로그래머와 같은 코드를 단축하는 방법을 생각하고, 그래도 좋다. htmlspecialchars_decode()은 결과를 반환하지만 원래 변수는 수정하지 않습니다. 그리고 당신은 그것에 대해 아무 것도 할 수 없습니다.

+0

내가 다른 답변 중 하나가 더 나은 이유를 확인 해달라고 :) 다를 수 있습니다 :

다음은 하나의 인자를 어떤 기능을 위해 가변 동작을 모방하는 데 사용할 수있는 일반적인 래퍼 PHP의 작동 방식을 수용하는 것 이외의 대안. 불필요한 '해결 방법'을 게시하지 않으려면 +1하십시오. –

3

해결책은 "중복"변수 언급을 포함하는 것입니다. 그것은 훨씬 더 읽기 쉽고 그렇게 혼란스럽지 않습니다. 생각의

$sourceElement['description'] = htmlspecialchars_decode($sourceElement['description']); 

당신의 방법 당신은

7

당신은 참조로 변수를 취 자신의 래퍼 함수를 ​​만들 수 있습니다

다음
function html_dec(&$str) {$str = htmlspecialchars_decode($str);} 

전화 : PHP에서

html_dec($sourceElement['description']); 
+0

좋은 해결 방법 및 정보, 감사합니다. 나는 네이티브 행동에 대한 추가 정보 때문에 다른 하나를 받아 들였습니다 (나중에 편집 한숨). –

+0

... 그리고 나는 값을 반환하는 모든 PHP 함수에 대해 이렇게 새 함수를 만들고, 사용하고 싶습니다. 이 경우 다른 언어를 찾는 것이 더 좋을 것입니다 ... –

2

대부분의 기능이 성숙의 불변을, 즉, 그들은 수정하지 마십시오 당신이 그들에게 넘기는 논증. 여기에는 몇 가지 장점이 있습니다. 그 중 하나는 부작용없이 표현식에서 반환 값을 사용할 수 있습니다.

function applyFn(&$s, $fn) 
{ 
    return $s = $fn($s); 
} 

applyFn($sourceElement['description'], 'htmlspecialchars_decode'); 

applyFn($sourceElement['description'], 'trim'); // trim string 

마일리지

+0

니스! 그냥 포인터를 가져 오는 PHP 함수에 문제가 생길지 모르겠다. 그래, 중복 질문, 내가 그냥 모든 기능에 이것을 사용하기 전에 매뉴얼을 확인할 수있을 것 같아요. –

+1

예.주의해서 사용해야합니다. :) –

관련 문제