Какие различия между HEAD, GET, POST, PUT
GET- Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса.Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»:http://site.ru/page.php?name=dima&age=27
Метод HEAD аналогичен методу GET, за исключением того, что сервер ничего не посылает в информационной части ответа. Метод HEAD запрашивает только информацию заголовка о файле или ресурсе. Информация заголовка запроса HEAD должна быть такой же, как в запросе GET.
Этот метод используется, когда клиент хочет найти информацию о документе, не получая его (время создания, тип)
Метод запроса POST предназначен для запроса, при котором веб-сервер принимает данные, заключённые в тело сообщения, для хранения. Он часто используется для загрузки файла или представления заполненной веб-формы. Метод POST предназначен для отправки представления новой сущности на сервер, так что она будет храниться как подресурс ресурса, идентифицированного URI. Например, для URI http://example.com/customers с помощью POST запросов можно было бы представлять новых клиентов, каждый из которых содержал бы имя, адрес, контактные данные и тому подобное.
|
|
Допустим, запись с идентификатором post-id уже создана и доступна по URL mydomain/notebooks/id/posts/post-id. Но клиент (владелец записи) исправил в ней ошибку и хочет перезаписать ее. Для этого он использует метод PUT с URL mydomain/notebooks/id/posts/ post-id
Отличия абстрактного класса и интерфейса. Пример.
interface I {
public function F();
public function say();
}
abstract class A implements I {
function say() {
echo 'Hello';
} // function F() - не реализована
}
1ое: в.net можно унаследоваться от 2 интерфейсов, но от 2 классов нельзя, это первое
а второе - то что в абстрактном классе можно объявить и реализовать методы, а в интерфейсе можно только объявить
можно добавить, что все методы интерфейса должны быть реализованы, когда от него наследуешься, а в абстрактном классе должны быть реализованы только методы которые помечены как abstract
(со старой шпоры):
Абстрактный(Abstract) класс - класс, который имеет хотя б 1 абстрактный (не определенный) метод; обозначается как abstract.
Интерфейс - такой же абстрактный класс, только в нем не может быть свойств и не определены тела у методов.
Так же стоит заметить, что абстрактный класс наследуется(etxends), а интерфейс реализуется (implements). Вот и возникает разница между ними, что наследовать мы можем только 1 класс, а реализовать сколько угодно.
ВАЖНО! При реализации интерфейса, необходимо реализовать все его методы, иначе будет Fatal error, так же это можно избежать, присвоив слово abstract.
|
|
3. Паттерн MVC. Отличия пассивной и активной моделей. Пример.
MVC — схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо.
• Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя свое состояние.
• Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели.
• Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.
Очень часто трактуют архитектурную модель MVC как пассивную модель MVC: модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате — код моделей по факту является средством получения данных из СУБД, а контроллер — типичным модулем, наполненным бизнес- логикой.
Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика; также, модели могут инкапсулировать в себе другие модели. Контроллеры же, — как элементы информационной системы, — ответственны лишь за: • Приём запроса от пользователя;
• Анализ запроса;
• Выбор следующего действия системы, соответственно результатам анализа (например, передача запроса другим элементам системы);
Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами информационной системы.
Пассивная — модель не имеет никаких способов воздействовать на представление или контроллер, и используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются контроллером и он же отвечает за перерисовку представления, если это необходимо. Такая модель чаще используется в структурном программировании, так как в этом случае модель представляет просто структуру данных, без методов их обрабатывающих.
Активная — модель оповещает представление о том, что в ней произошли изменения, а представления, которые заинтересованы в оповещении, подписываются на эти сообщения. Это позволяет сохранить независимость модели как от контроллера, так и от представления.