Предположим, вы разрабатываете большое приложение, в котором используются механизмы управления сеансами и абстрактного представления базы данных, а также функции аутентификации и определения прав доступа библиотеки PHPLib. Для этого вам требуется создать экземпляры объектов сеанса, аутентификации и разрешения на доступ. Ваш локальный файл local.inc будет выглядеть примерно так:
-
$sess = new Session_Example;
-
$sess->start();
-
$auth = new Auth_Example;
-
$auth->start();
-
$perm = new Perm_Example;
-
$user = new User_Example;
-
$user->start();
Классы не являются независимыми друг от друга, поэтому их нужно инициализировать в правильном порядке; нельзя создать экземпляр объекта User_Example, если нет экземпляров объектов сеанса и аутентификации. И это еще не все. Способ завершения программы зависит от того, какой класс вы открыли первым; порядок, в котором вызываются программы освобождения ресурсов, занятых классами, также имеет значение.
Вам помогут имеющиеся в библиотеке PHPLib функции page_open() и page_ close(). В документации они называются функциями управления страницами (page-management functions). Действительно, они могут выполнить всю работу, относящуюся к инициализации и закрытию библиотеки PHPLib. Используя эти функции, мы можем значительно сократить размер нашего примера.
-
page_open(array("sess" => "Session_Example",
-
"auth" => "Auth_Example",
-
"perm" => "Perm_Example"));
-
[?]
-
page_close();
В этом примере функция page_open() создает экземпляры классов Session_ Example, Auth_Example и Perm_Example с именами $sess, $auth и $perm соответственно. Теперь эти экземпляры можно использовать напрямую, например, при обращении к функции $sess->register().
Функция page_open() должна вызываться до первой операции вывода, так как она определяет файлы персональных настроек и другие данные заголовков HTTP.