나는 다른 변수 중에서도 내가 제공 한 변수를 기반으로 전역 변수를 선언하려고하는 중입니다. 실패 부분은변수 이름을 가진 php 전역 변수
function setGlobalVariable($name) {
global $name, $arrayname_{$name};
}
어떤 생각 글로벌 변수를하고있다? 고마워요 :)
나는 다른 변수 중에서도 내가 제공 한 변수를 기반으로 전역 변수를 선언하려고하는 중입니다. 실패 부분은변수 이름을 가진 php 전역 변수
function setGlobalVariable($name) {
global $name, $arrayname_{$name};
}
어떤 생각 글로벌 변수를하고있다? 고마워요 :)
정말로, 전역 변수를 그렇게 혼란스럽게합니다.
function setGlobalVariable($name) {
$GLOBALS['arrayname_' . $name] = 'yourvalue';
}
당신은 그렇게 안 : 당신이 정말로 그렇게하려면
Anywaym 여기에 솔루션입니다. 전역 변수는 일반적으로 잘못된 설계의 표시입니다. 달성하고자하는 것은 무엇입니까? 더 나은 해결책이 있다고 확신합니다. 그 외에도 global
은 그렇게 작동하지 않습니다. global
은 함수 외부의 다른 변수를 로컬에서 사용할 수 있도록합니다. 전역을 만들려면 $_GLOBAL
을 사용하십시오.
당신은 거의 옳았 습니다만, 그렇지는 않습니다. 가변 변수는 ${"name"}
의 형식을 취하므로 찾으려는 것은 global ${"arrayname_$name"};
입니다.
http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38 당신이 그렇게 생각한다면 주제에 대한 흥미로운 내용입니다.
그런 생각이 들기는하지만 코드를 잘못 설계하면 좋은 징표가 될 수 있습니다. 리팩토링을 고려하십시오 (예를 들어, 다른 배열이 유지되고 키에 의해 참조 될 수있는 하나의 알려진 배열을 유지하는 것).
레지스트리 패턴 (http://martinfowler.com/eaaCatalog/registry.html)을 살펴보십시오. 다른 개체 일반적인 객체와 서비스를 찾을하는 데 사용할 수있는
는잘 알려진 객체입니다. 다양한 PHP 구현 예 Zend_Registry를 들어,이
있습니다 : http://framework.zend.com/manual/en/zend.registry.html
가 왜 변수와 글로벌 네임 스페이스를 오염할까요? – stillstanding
가난한 개발자가 작성한 코드를 지원합니다. – zerkms
하나만 : 전역 변수를 사용하지 마십시오. 일반적으로 이들은 문제의 강력한 원천입니다 (그리고 당신은 그것들을 필요로하지 않습니다). – Eineki