저는 초보자입니다. 공부 중에 이해가 안 되는 부분도 있고 검색도 쉽지 않아서 여러분들께 물어보려고 여기에 보냈습니다.
모든 답변과 도움에 미리 감사드립니다.
제목 그대로
<code>目前有 a.php b.php c.php 三个文件 </code>
a.php 의사 코드는 다음과 같습니다.
<code><?php function say($key,$val){ global $array; $array[$key]=$val; extract($array); } function write($name){ include_once($name.".php"); } $action = $_GET['a'];//假设当前 url: a.php?a=b include_once($action.".php"); $action();</code>
b.php 코드는 다음과 같습니다
<code><?php function b(){ say("str","thinks"); write("c"); }</code>
c.php
<code><?php var_dump($str);</code>
달성해야 할 목표는 C.PHP 파일에서 변수 값을 직접 읽을 수 있다는 것입니다.
일반적인 로직은 위와 같습니다. 그리고 개인적으로는 이 부분이 프레임워크의 할당/표시와 유사하다고 생각하는데, 어떻게 구현해야 할지 모르겠습니다.
위 코드는 오류를 보고합니다: Notice: Undefined variable: str
저에게 조언(또는 글쓰기 습관 등)을 주실 수 있으면 좋겠습니다.
감사합니다.
저는 초보자입니다. 공부 중에 이해가 안 되는 부분도 있고 검색도 쉽지 않아서 여러분들께 물어보려고 여기에 보냈습니다.
모든 답변과 도움에 미리 감사드립니다.
제목 그대로
<code>目前有 a.php b.php c.php 三个文件 </code>
a.php 의사 코드는 다음과 같습니다.
<code><?php function say($key,$val){ global $array; $array[$key]=$val; extract($array); } function write($name){ include_once($name.".php"); } $action = $_GET['a'];//假设当前 url: a.php?a=b include_once($action.".php"); $action();</code>
b.php 코드는 다음과 같습니다
<code><?php function b(){ say("str","thinks"); write("c"); }</code>
c.php
<code><?php var_dump($str);</code>
달성해야 할 목표는 C.PHP 파일에서 변수 값을 직접 읽을 수 있다는 것입니다.
일반적인 로직은 위와 같습니다. 그리고 개인적으로는 이 부분이 프레임워크의 할당/표시와 유사하다고 생각하는데, 어떻게 구현해야 할지 모르겠습니다.
위 코드는 오류를 보고합니다: Notice: Undefined variable: str
저에게 조언(또는 글쓰기 습관 등)을 주실 수 있으면 좋겠습니다.
감사합니다.
global $array;
은 $array의 범위만 수정하지만 extract($array);
은 함수 내에서 실행되므로 $str의 범위는 여전히 함수 내에 있습니다.
'개인적으로는 이 부분이 프레임워크에 할당/표시하는 것과 비슷하다고 생각합니다'와 '하지만 구현 방법을 모르겠습니다'라고 말씀하신 두 문장은 모르신다면 모순입니다. 어떻게 구현하면 이 부분이 프레임워크의 할당/표시와 유사하다고 생각하는 이유는 무엇입니까?
클래스를 사용하여 작성하면 예제는 동일합니다. 세 개의 파일을 별도로 정의할 필요가 없으며 사용하는 기능은 객체 지향 방식으로 잘 생각하지 못한다는 것을 보여줍니다. , 그리고 당신의 걸음은 안정적이지 않습니다. 우리가 당신에게 스프린트 기술에 대해 말하는 것은 확실히 의미가 없습니다.
PHP
의 모든 변수에는 범위가 있습니다. 프레임워크에서 assign/display
및 기타 양식을 사용하여 볼 수 있는 템플릿 엔진은 모두 extract
출력 변수와 include
가져오기 템플릿 파일을 동일한 파일에 넣습니다. 함수를 사용하는 경우에만 변수 범위가 일관될 수 있으며 가져온 파일에서 변수 값을 얻을 수 있습니다. 작성 방법에 관해서는 두 작업을 서로 다른 기능으로 분할하면 물론 서로 액세스할 수 없습니다. c.php
에서 변수 값을 얻고 싶다고 말하지 마세요. say("str","thinks");
바로 다음에 변수 값을 얻을 수는 없습니다.
당신은 함수의 전역 및 내부 변수 범위 문제를 제대로 이해하지 못한 것 같습니다. 개념이나 사용법을 다시 한번 확인해 보시는 걸 추천드려요!
귀하의 생각에 따르면 var_dump($str);의 $str은 extract($array);의 매개변수 'str'입니다. 실제로 이때 var_dump가 얻으려는 것은 기능을 말해요.
당신이 하는 일은 다음과 같습니다.
<code>function a(){ $str = '123'; } a(); var_dump($str);</code>
$str을(를) 얻을 수 없습니다.