문제

나는 OOP를 위해 PHP에서 찌르고 있었고 무언가를 발견했다. 문제는 다른 사람이 웹 사이트에있는 시간 내내 클래스 변수에 특정 정보를 유지하기를 원한다는 것입니다.

  1. 누군가가 웹 사이트에서 서핑을하고있는 내내 물건을 살아남을 수있는 일종의 방법이 있습니까?
  2. 내 문제에 어떤 대안이 있습니까?

예제도 갖는 것이 정말 도움이 될 것입니다!

도움이 되었습니까?

해결책

PHP는 상태가 아닙니다. 모든 페이지로드는 한 번의 이벤트입니다. 세션으로 데이터를 유지하거나 데이터베이스에 정보를 저장하여 유지할 수 있습니다.

다른 팁

당신이 사용할 수있는 세션 다른 페이지간에 한 명의 사용자와 관련된 데이터를 유지하려면 (인용) :

PHP의 세션 지원은 후속 액세스에서 특정 데이터를 보존하는 방법으로 구성됩니다.

참조 세션 처리 매뉴얼 섹션, 세션에 대한 더 많은 정보.

Apache가 페이지를 제공하기 전에 PHP 스크립트가 종료되어야하므로 실제로 그렇게하고 싶다면 할 수있는 한 가지는 직렬화 지속하려는 모든 물체를 저장하고 사용합니다. 세션 사용자를 추적하는 쿠키

  1. PHP는 StateFull이 아닙니다. 모든 요청은 서버의 새로운 프로세스입니다.

가장 좋은 방법은 세션 데이터를 사용하여 세션 데이터를 인스턴스화 할 때 객체에 세션 데이터를 전달하는 것입니다. 콘트 루터가 세션에서 필요한 데이터를 가져 오도록하면 본질적으로 필요한 상태 충만함이 있습니다.

당신은 sesion을 사용하여 사용할 수 있습니다

$_SESSION['stuff'] = $data;

그런 다음 $ X = New DataStore ($ _ session [ 'stitse'])와 같은 객체를 사용할 수 있습니다.

세션에 데이터가 있으면 객체가 해당 데이터에서 자체적으로 채워집니다. 그렇지 않으면 표준 초기에 기본값이됩니다.

객체 직렬화와 같은 접근 방식이 객체를 사용하여 유용한 경우에도 먼저 이해해야합니다. 당신의 물체는 "사라집니다".

웹 서버에서 페이지 및 기타 리소스를 검색하는 데 사용되는 프로토콜 인 HTTP는 무국적. 기본적으로 한 요청이 같은 사용자가 나온 경우에도 다른 요청에서 아무것도 모르는 것을 의미합니다. PHP 페이지를 요청하면 스크립트가 실행되고 완료된 후 Apache가 결과를 보내는 후에 이런 식으로 생각하십시오. 페이지를 다시 요청하면 처음으로 한 페이지와 마찬가지로 똑같은 일을합니다. 그것은 무국적입니다.

요청 사이에 상태를 유지하는 기술이 있으며 (객체를 잊지 않도록) 쿠키 나 URL 재 작성과 같은 것들이 포함됩니다. 그러나 웹 애플리케이션을 개발할 때 HTTP (및 PHP 스크립트)의 무국적 특성을 명심해야합니다.

세션은 좋으며, 일부 PHP 프로그래밍에서 객체 상태를 유지하는 데 사용합니다.

또는 더 나은 솔루션은 사용하는 것입니다 몸을 풀다 따라서 Stationeles HTTP 프로토콜에 대해 걱정할 필요가 없습니다 ...

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