2009-10-10 7 views
4

저는 MySQL/PHP/Javascript로 webapp를 만들고 있습니다.AJAX - PHP 통신 패턴

PHP에서는 데이터베이스에서 지속되는 문제를 도메인의 모든 클래스에서 가져 왔습니다. 자바 스크립트에는 마지막 쿼리의 개체가있는 캐시가 있습니다.

자바 스크립트의 객체가 사용자에 의해 업데이트되면 서버 측에서 자체를 업데이트해야합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

통신 목적으로 PHP와 Javascript로 클래스를 생성해야합니까? Javascript의 각 객체는 업데이트해야하는 객체의 클래스에 따라 다른 PHP 파일에 AJAX 쿼리를 보내야합니까? 이를 해결하기 위해 따라야 할 패턴이 있습니까?

답변

1

각 클래스에 대해 별도의 PHP 파일을 만드는 것이 어떤 크기의 프로젝트라도 확실하게 유지 관리 할 수 ​​있습니다. 또한 클래스를 기반으로 다른 서버 수준 인증을 갖는 것과 같은 작업을 수행 할 수 있습니다.

JavaScript 쪽에서는 AJAX 라이브러리를 함께 사용하거나 (약 50 줄의 JavaScript를 한 번 사용했는지 여부와 상관없이) AJAX 라이브러리를 원한다면 그 중 하나를 사용하십시오. 데이터 (XML, JSON, 구분 된, 무엇이든)를 직렬화하는 방법을 알고있는 헬퍼 함수 또는 두 개가 필요할 수 있습니다.

JavaScript로 객체 지향 코드를 작성할 수 있으며, 이미 그렇게하고 있다면 write() 또는 updateServer() 메소드를 추가하여 일관성을 위해 올바른 매개 변수로 AJAX 라이브러리를 호출하는 것이 좋습니다. OO 코드를 작성하지 않는다면 별도의 기능을 보유하는 것이 이치에 맞을 수 있습니다. 단, 두 개 이상의 장소가있는 경우에만이 오브젝트를 유지해야합니다.

+0

그래서 JS의 각 프로토 타입은 PHP 파일을 속성으로 호출해야하며 updateServer()는이 PHP 파일 (각 클래스마다 하나씩)에 정보를 보내야합니다. – Gerardo

+1

JS의 "프로토 타입"이 엔티티를 나타내는 범위까지 그렇습니다. 그것은 캡슐화에 관한 모든 것입니다. 각 JS 프로토 타입마다 하나의 PHP 파일이 있어야한다는 것은 아닙니다. JS와 PHP 모두 시스템이 작동하는 각 엔티티를 캡슐화해야한다고 말하고 있습니다. 그 부작용은 양측에 존재하는 모든 엔티티가 프로토 타입이나 파일을 가질 것이지만 목표가 아닙니다. 캡슐화가 있습니다. 말이 돼? –

0

PHP와 JavaScript를 사용하여 REST ful API를 살펴보아야합니다. 도메인 모델 개체를 고유 한 리소스 (예 :/application/books/1)로 지정합니다. CRUD 기능 만 구현하려면 (예 : Doctrine과 같은 ORM 도구를 사용하여) 해당 도메인 모델을 업데이트하는 일반 컨트롤러로 충분해야합니다.

JavaScript에서 클라이언트 측에서 실제로 동일한 모델을 사용하려는 경우 애플리케이션에 따라 다릅니다. 클라이언트 측에서 하나의 JavaScript 객체를 관리한다는 생각을 좋아합니다. 클라이언트 객체는 REST를 통해로드 된 다음 HTML 양식으로 채워지고 예를 들어 다시 전송됩니다. JSON (또는 간단한 양식 제출)으로 서버에 전송할 수 있습니다. 클라이언트 측 모델 아이디어가 당신에게 호소하는 경우, 상당히 흥미로운 모델 구현을 가지고있는 JavaScript MVC을 살펴볼 것을 권장합니다.

1

대부분의 AJAX 프레임 워크 (jQuery 등)는 'xmlhttprequest'로 설정된 'HTTP_X_REQUESTED_WITH'헤더를 보냅니다. 이 뷰를 사용하여 사용할보기를 결정하는 것을 좋아합니다.

JavaScript를 통해 JSON, XML 또는 HTML 스 니펫을 검색하거나 표준 GET/POST 요청이있을 경우 전체 문서를 반환하는 데 동일한 URL을 사용할 수 있습니다.

이것은 사용자가 JS를 사용할 수없는 경우 응용 프로그램이 일반 요청으로 되돌아갑니다.