PHP를 사용한 객체 지향 프로그래밍 : 상쾌함을 죽인다.
-
21-09-2019 - |
문제
나는 OOP를 위해 PHP에서 찌르고 있었고 무언가를 발견했다. 문제는 다른 사람이 웹 사이트에있는 시간 내내 클래스 변수에 특정 정보를 유지하기를 원한다는 것입니다.
- 누군가가 웹 사이트에서 서핑을하고있는 내내 물건을 살아남을 수있는 일종의 방법이 있습니까?
- 내 문제에 어떤 대안이 있습니까?
예제도 갖는 것이 정말 도움이 될 것입니다!
해결책
PHP는 상태가 아닙니다. 모든 페이지로드는 한 번의 이벤트입니다. 세션으로 데이터를 유지하거나 데이터베이스에 정보를 저장하여 유지할 수 있습니다.
다른 팁
- PHP는 StateFull이 아닙니다. 모든 요청은 서버의 새로운 프로세스입니다.
가장 좋은 방법은 세션 데이터를 사용하여 세션 데이터를 인스턴스화 할 때 객체에 세션 데이터를 전달하는 것입니다. 콘트 루터가 세션에서 필요한 데이터를 가져 오도록하면 본질적으로 필요한 상태 충만함이 있습니다.
당신은 sesion을 사용하여 사용할 수 있습니다
$_SESSION['stuff'] = $data;
그런 다음 $ X = New DataStore ($ _ session [ 'stitse'])와 같은 객체를 사용할 수 있습니다.
세션에 데이터가 있으면 객체가 해당 데이터에서 자체적으로 채워집니다. 그렇지 않으면 표준 초기에 기본값이됩니다.
객체 직렬화와 같은 접근 방식이 객체를 사용하여 유용한 경우에도 먼저 이해해야합니다. 왜 당신의 물체는 "사라집니다".
웹 서버에서 페이지 및 기타 리소스를 검색하는 데 사용되는 프로토콜 인 HTTP는 무국적. 기본적으로 한 요청이 같은 사용자가 나온 경우에도 다른 요청에서 아무것도 모르는 것을 의미합니다. PHP 페이지를 요청하면 스크립트가 실행되고 완료된 후 Apache가 결과를 보내는 후에 이런 식으로 생각하십시오. 페이지를 다시 요청하면 처음으로 한 페이지와 마찬가지로 똑같은 일을합니다. 그것은 무국적입니다.
요청 사이에 상태를 유지하는 기술이 있으며 (객체를 잊지 않도록) 쿠키 나 URL 재 작성과 같은 것들이 포함됩니다. 그러나 웹 애플리케이션을 개발할 때 HTTP (및 PHP 스크립트)의 무국적 특성을 명심해야합니다.
세션은 좋으며, 일부 PHP 프로그래밍에서 객체 상태를 유지하는 데 사용합니다.
또는 더 나은 솔루션은 사용하는 것입니다 몸을 풀다 따라서 Stationeles HTTP 프로토콜에 대해 걱정할 필요가 없습니다 ...