Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 11.06.2011, 20:58   #1
Заблокирован
 Разведчик
Аватар для Я убью:Frost:DD
 
Я убью:Frost:DD на правильном пути
Регистрация: 06.06.2011
Сообщений: 20
Популярность: 74
Сказал(а) спасибо: 65
Поблагодарили 32 раз(а) в 22 сообщениях
 
По умолчанию Автоматическая загрузка классов в PHP

При разработке приложений на PHP распространенной практикой является создание одного файла на один класс. В результате может получиться весьма внушительный список включений вначале каждого скрипта.

Но с появлением PHP 5 такой список можно элегантно заменить, определив функцию __autoload, которая будет автоматически вызываться в случае использования класса/интерфейса, который еще не определён.

Вот пример. Создадим два класса. Первый будет размещаться в файле Image.php и иметь код:1 <?php
2 class Image {
3
4 function __construct() {
5 echo 'Класс Image успешно загружен.<br />';
6 }
7
8 }
9 ?>


Второй класс будет размещаться в файле Test.php:1 <?php
2 class Test {
3
4 function __construct() {
5 echo 'Класс Test работает.<br />';
6 }
7
8 }
9 ?>


Для примера мы создали два простых класса с конструкторами, которые выводят сообщения. Теперь создадим файл index.php, в котором будем использовать оба класса:1 <?php
2 function __autoload($class_name) {
3 require_once $class_name . '.php';
4 }
5
6 $a = new Test();
7 $b = new Image();
8 ?>


Когда запускается index.php в браузере, все отлично работает (все три файла должны находиться в одной папке). Конечно, на двух классах преимущества такой записи не видно. Но представьте, что проект содержит 10 и более классов, и что надо в каждом файле писать require_once много раз.

Кроме того, можно воспользоваться исключениями в PHP 5.3 и выше. Изменим index.php следующим образом:01 <?php
02 function __autoload($class_name) {
03 if(file_exists($class_name . '.php')) {
04 require_once($class_name . '.php');
05 } else {
06 throw new Exception("Недоступен файл для класса $class_name.");
07 }
08 }
09
10 try {
11 $a = new Test();
12 $b = new Image();
13 } catch (Exception $e) {
14 echo $e->getMessage(), "\n";
15 }
16 ?>


Теперь наш код еще и проверяет наличие файлов и выдает соответствующее предупреждение.
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
ПодпольщикPB (12.06.2011), ololoshnik212 (11.06.2011)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BSkill 0.1 - Автоматическая атака на боссов CreatiK Тюряга ВКонтакте 89 25.05.2011 04:07
[BiK]Boss - Автоматическая Атака на боссов CreatiK Баги игр ВКонтакте 23 22.05.2011 01:42
Автоматическая установка приложений Georgsius Свободное обсуждение 0 03.02.2011 13:37
[Обсуждение] Автоматическая система банов запущена! DM1TRO Общение и обсуждение, архив Point Blank 30 02.12.2010 12:40
Автоматическая отправка и продажа сирья из скайлеба!! (неиспользуя бота) topanok Dark Orbit 6 19.09.2010 13:51

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 12:33.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net