PHP Wrapper клас за методи
PHP: Class Wrapper Class
И така, най-простото решение е да се създаде метод (обвивка), който да вземе името и параметъра на извикания метод като параметри. В този случай методът на обвивка е самата „обвивка“. Прилагането на това решение може да бъде както следва:
Изключения.php
ModelExtention.php
MyModel.php
Нека да разгледаме какво съм написал тук.
Примерът включва няколко файла:
- Изключения.php - в него хвърлени в изключения за улавяне на грешки в заявки ExceptionDb и в ExceptionModel .
- ModelExtention.php - родителски клас на модела. Всички модели, използвани в проекта, се наследяват от него. Той също така описва обвивката. Името на метода трябва да бъде извикано като първи аргумент, а данните, предадени на извикания метод, като втори аргумент. Преди да извикате метода, чрез функцията is_callable се проверява дали той съществува и може да бъде извикан; в противен случай се хвърля изключение ExceptionModel, което веднага се прихваща, тъй като конструкцията if - else се поставя в блок try-catch. Ако методът съществува, той се извиква, поставен в блок try-catch, който улавя заявки ExceptionDb от базата данни. Този момент трябваше да бъде осъзнат.
- MyModel.php - тестов модел. Класът MyModel разширява ModelExtension. Той описва тестови методи, които се изпълняват успешно (метод на заявка) или връщат изключение ExceptionDb (метод errorQuery).
- index.php - събира всички файлове и стартира тестов случай.