ინტერფეისი საშუალებას გვაძლევს რომ განვსაზღვროთ თუ რა მეთოდები უნდა დააიმპლემენტიროს (განუსაზღვროს ლოგიკა) კლასმა რომელიც მას დააექსთენდებს. ის აბსტრაქტული კლასისგან განსხვავდება იმით, რომ მას არ შეუძლია გააჩნდეს საკუთარი თვისებები ან მეთოდები რომელიც საერთო იმ კლასებისათვის რომლებიც "განავცრობენ" ამ ინტერფეისს.
ინტერფეისის სინტაქსი კლასისაგან ორი ძირითადი ნიშნით განსხვავდება. პირველი არის ის, რომ ვიყენებთ interface ქივორდს, ხოლო მეორე ის რომ ყველა მეთოდი უნდა იყოს public.
<?phpinterfaceStorageService{publicfunctionstore($data); // ლოგიკა არ არის განსაზღვრულიpublicfunctionfetch(); // ყველა მეთოდი public-ია}// მონაცემთა ბაზის კლასიclassDatabaseServiceimplementsStorageService{publicfunctionstore($data) {// მაგალითის სიმარტივისთვის წარმოვიდგინოთ რომ აქ წერია განხორციელების გზა// store data in database Code }publicfunctionfetch() {// fetch data from database Code }}// რედისის კლასი ქეშირებისთისclassRedisServiceimplementsStorageService{publicfunctionstore($data) {// Cache data Code }publicfunctionfetch() {// fetch Cached data Code }}// [!] ეს კლასი ედიტორის დონეზეც კი ერორს აჩვენებს ვინაიდან// [!] ის არ ახორციელებს store და fetch მეთოდების იმპლემენტაციას// ფაილების სახით შემნახავი კლასიclassFilesServiceimplementsStorageService{// [!] ErrorpublicfunctionwriteInFile($data) // ვინაიდან მეთოდის სახელი არ არის store ერორია {// write data into some file }publicfunctionReadFromFile()// ვინაიდან მეთოდის სახელი არ არის fetch ერორია/ {// fetch data from file }}