문제

내 앱에는 1 페이지에 객체 인스턴스가 생성되었다고 가정 해 봅시다. 사용자는 앱의 다른 부분으로 이동하여 인스턴스가 유지되기를 원합니다. 인스턴스를 '저장'하려면 어떻게해야합니까? 세션?

도움이 되었습니까?

해결책

예, 사용하십시오 세션.

부르다 session_start () 페이지 시작시 $_SESSION['myobject']=$myobject;

이후 페이지에 액세스 할 수 있습니다 $_SESSION['myobject'] 또한 전화 한 후 Session_Start ()

해당 세션을 사용하는 모든 페이지에 정의 된 객체의 클래스가 있거나 자동로드 그것.

수업은 또한 마법 방법을 정의 할 수 있습니다 __잠 그리고 __깨우다 이를 통해 직렬화를 원하지 않는 멤버 변수 (예 : DB 핸들과 같은 리소스)를 정리할 수 있습니다. __wakeup 동안이를 복원 할 수 있습니다.

다른 팁

내 응용 프로그램에 사용한 두 가지 방법은 세션과 데이터베이스입니다.

세션 예, 그러나 그것은 동일한 속성을 가진 새로운 인스턴스가 될 것입니다. 같은 사례. 다른 옵션은 O/R -Mapper를 사용하여 DB에 객체를 저장하고 세션에 키를 유지하거나 고유 한 키 (예 : 세션 ID)와 함께 MemCached를 사용하지만 여전히 그렇지 않습니다. 같은 인스턴스 - 동일한 속성을 가진 인스턴스입니다.

필요한 경우 똑같습니다 PHP의 두 요청 사이의 객체 인스턴스는 이것이 불가능하다는 것을 두려워합니다 ( 불가능한, 모든 것이 가능합니다. 그러나 일부 유형의 애플리케이션 서버 위에서 PHP를 실행해야합니다).

기본적으로 두 가지 옵션이 있습니다. 서버 측 상태 또는 클라이언트 측 상태.

서버 측 상태는 일반적으로 세션을 통해 수행됩니다. 이것은 가장 단순하고 가장 강력한 솔루션이지만 몇 가지 단점이 있습니다 (동시성, 시간이 지남에 따라 상태를 유지할 수없는 등).

클라이언트 측 상태는 일반적으로 쿼리 문자열 매개 변수에서 URL을 통해 유지할 수 있습니다. 예를 들어, 변수를 "기억"합니다 $name 두 페이지 사이에서 다음과 같은 첫 페이지의 링크를 만들 수 있습니다. http://www.example.org/second_page.php?name=Jimbo, 두 번째 페이지는 변수를 $_GET. 이것은 제대로하기가 훨씬 어렵고 페이지간에 전송할 수있는 상태에 대한 제한이 있습니다. 이러한 이유로, 사람들은 클라이언트 측 상태가 더 적합한 경우에도 서버 측 상태를 사용하는 경향이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top