2010-01-09 2 views
1

단일 PHP 파일을 사용하여 데이터베이스에서 레코드를 검색하는 플래시 응용 프로그램 (Zend 프레임 워크 사용)이 있습니다. 응용 프로그램이 처음 시작될 때 클래스 변수를 설정하기 위해 PHP를 호출합니다. 따라서 향후 데이터베이스에 대한 모든 요청에서이 변수를 사용하여 해당 값을 기반으로 레코드를 선택합니다. 그래서 여기에 클래스가 시작하는 방법입니다젠드 PHP 클래스 mysql 쿼리에 대한 변수 보존

class MyClass 
{ 

    private $animal = ""; 

    public function setAnimal($anim) { 
     $this->animal = $anim; 
     echo($this->animal); //this correctly prints the variable I passed in 
    } 

나중에 사용자 입력을 기반으로, 나는이 클래스의 다른 메서드 호출을하지만, 클래스 변수 $ 동물이 분실 된 것처럼는 없기 때문에,이다 더 클래스의 후속 액세스에 대한 값을 가지고

public function getAnimals() 
    { 
     echo('getAnimals: '); 
     echo($this->animal); //this prints nothing - as if it doesn't know what "animal" is 

     $result = mysql_query("SELECT * FROM animals WHERE animal='$this->animal'"); //and therefore this query doesn't work 
     $t = array(); 

     while($row = mysql_fetch_assoc($result)) 
     { 
      array_push($t, $row); 
     } 

     return $t; 
    } 

그래서 내 질문입니다, 내가 한 번 설정할 수 있습니다, 그리고이 기간 동안 언제든지 액세스 할 수 있도록 유지하는 PHP 클래스 변수를 얻을 수있는 방법 응용 프로그램의 수명?

답변

2

질문을 잘못 해석 할 수도 있지만 플래시에서 PHP 스크립트를 처음 호출하는 것처럼 들리지만 나중에 플래시에서 PHP 스크립트를 두 번째로 호출하고 특정 변수가 필요하다고 생각됩니다 설정 되니?

이 경우 문제가되는 경우도 있습니다. PHP는 무국적자입니다. PHP 스크립트 (예 : URL 요청)에 액세스 할 때마다 PHP 환경이 처음부터 다시 작성됩니다. 요청이 완료되고 PHP 스크립트 실행이 끝나면 환경이 파괴됩니다 (즉, 웹 서버 스레드가 종료되고 PHP 환경이 손실 됨). 첫 번째 요청에서 설정하거나 수행 한 작업은 두 번째 요청시 존재하지 않습니다.

정보를 유지하려면 세션이나 쿠키를 사용할 수 있습니다. 플래시를 사용하고 있으므로 sessions이 가장 좋은 방법 일 것입니다. 처음으로 스크립트를 호출하면 세션 토큰을 생성하고 응답과 함께 플래시로 다시 전달합니다. 이후의 모든 호출에서 Flash는 세션 토큰을 제공해야하며 $_SESSION에서 필요한 모든 상태 변수를 저장/가져올 수 있습니다.

+0

그래, 그건 내가 두려워했던거야. 세션과 플래시에 대한 조사를해야만하는 것 같습니다. 감사. – sol