Как ограничить доступ к файлу php?

логика приложения делится на следующие части:

1. Сначала работает

роутер

(фронт контроллер). Он смотрт на входящие параметры и определяет, какой обработчик будет действовать.

Т.е. если он увидит адрес "/posts/create" и содержимое {name: 'foo', content: 'bar'}, то вызовет действие create обработчика posts, которому передаст параметры {name: 'foo', content: 'bar'}.

Связь параметров с действием ты задаешь сам.

2.

Обработчик

(контроллер). Его задача - взять данные от пользователя и передать их логике, после чего вызвать отображение. Больше ничего в нем быть не должно, только работа с HTTP.

Грубо говоря тут несколько строк, хотя новички любят пихать сюда всю логику, не выделяя е в отдельный слой.

Пример кода:

новости = Новости.сортируяПоДате.страница(параметры[номер_страницы])
ВызватьВид(новости, "шаблон_новостей")

Т.е. я не шутил, когда говорил про пару строк, я имел ввиду это буквально: 1-10 строк.

3.

Логика

(модель). Этот код ничего не знает о запросах, куках и т.д., ведь этим занимается обработчик. Но данный код выполняет всю бизнес-логику приложения. Вся работа с файлами, базой, алгоритмами тут.

4.

Отображение

(вид). Занимается отображением данных, полученных их контроллера. Естественно, может содержать логику отображения.

Данная схема называется MVC. Это шаблон проектирования, и смысл его именно в разделении логики на 3-4 части.

Весь PHP код кроме index.php лежит выше document root вебсервера.