As the implementation language for a vast space of the applications through out the web, PHP still finding a proper place in the enterprise space. Can PHP go beyond the conventional web based database back-ended applications?. Can I use public data sources to help my finical decisions?. Can I use PHP to communicate with other enterprises?. Can my PHP CRMs, CMSes interact with each other?. Can I make these interactions secure and reliable?.
Yes. Certainly you can. Now PHP is enterprise ready with WSF/PHP toolkit.
In RESTful paradigm we give a piece of data ( or in other word ‘Resource’) a unique URL. And in order to manipulate data we use HTTP verbs POST/PUT (create, update), GET (read), DELETE (delete). For an example
take the scenario of manipulating Students data in a high school. Here is how each operation is mapped to a http request (URL + HTTP verb)
HTTP request
Operation
POST api/students/ben
Create the resource (peice of data) called ben as a student. HTTP body or the url itself (e.g. api/students/ben?age=15&country=xx) may contain the required information about ben
GET api/students/ben
Retrieve the information about ben.
PUT api/students/ben
Update ben
DELETE api/student/ben
Delete the student called ‘ben’.
With the addition of all these HTTP verbs WSO2 WSF/PHP 2.0.0 become a great tool for RESTful developers. Specially with the introducing Data Services library it was so easy to make your database a REST service. I m thinking of preparing a series of application to demonstrate the power of WSF/PHP with all these new features.
This demo -RESTful School- shows how you map a URL to a peice of data. Here we use only the http “GET” method (which is the most to used in practicle data service).
SELECT subjectName, subjectTeacher FROM Subjects where SubjectName = ?
The single parameter feed from prepared statement syntax
Get All students
students
SELECT * FROM Students
Again no parameters
Get students From Name
students/{name}
Inner Query:
SELECT subjectName, marks FROM Marks m, Subjects s ".
" where m.studentId = ? and m.subjectID = s.subjectId
Outer Query
SELECT * FROM Students where StudentName = ?
Nested query, Inner query is called from outer query
Get Marks per Students per Subjects
students/{student}/marks/{subject}
SELECT marks FROM Marks, Subjects, Students where StudentName = ?".
" and SubjectName = ? and Marks.subjectId = Subjects.subjectId".
" and Marks.studentID = Students.StudentId;