-Приложения

  • Перейти к приложению Открытки ОткрыткиПерерожденный каталог открыток на все случаи жизни
  • Перейти к приложению Я - фотограф Я - фотографПлагин для публикации фотографий в дневнике пользователя. Минимальные системные требования: Internet Explorer 6, Fire Fox 1.5, Opera 9.5, Safari 3.1.1 со включенным JavaScript. Возможно это будет рабо
  • Все на карте

 -Поиск по дневнику

Поиск сообщений в Net-man

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 20.04.2010
Записей: 814
Комментариев: 5985
Написано: 11575


Уроки по PHP: PHP5 и ООП (Часть 3)

Пятница, 03 Июня 2011 г. 18:05 + в цитатник
__autoload()

Многие разработчики, пишущие объектно-ориентированные приложения, создают один файл, в котором содержится определение класса. Очень неудобно писать в начале каждого скрипта длинный список включаемых файлов по одному на каждый класс.

В PHP 5 в этом больше нет необходимости. Вы можете определить функцию __autoload() , которая автоматически будет вызываться в случае использования класса, который не был определен выше. Вызывая такую функцию, Zend Engine дает возможность загрузить файл с определением класса прежде, чем будет сформировано сообщение об ошибке и выполнение скрипта прекратится.

<?php
function __autoload($class_name) {
     include_once(
$class_name . "php");
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Обработка исключительных ситуаций (исключений)

PHP 5 добавляет парадигму обработки исключений, вводя структуру try/throw/catch. Вам остается только создать объекты, которые наследуют класс исключений Exception.

<?php
class SQLException extends Exception {
     public
$problem;
     function
__construct($problem) {
        
$this->problem = $problem;
     }
}

try {
     ...
     throw new
SQLException("Couldn't connect to database");
     ...
} catch (
SQLException $e) {
     print
"Caught an SQLException with problem $obj->problem";
} catch (
Exception $e) {
     print
"Caught unrecognized exception";
}
?>

В настоящее время в целях обратной совместимости большинство внутренних функций не использует исключения. Однако, все новые расширения будут иметь такую возможность, и вы можете использовать такую конструкцию в своем исходном тексте. Кроме того, подобно уже существующей функции set_error_handler(), вы можете использовать set_exception_handler(), чтобы отловить необработанное исключение прежде, чем выполнение скрипта будет закончено.

Сравнение объектов

В PHP 5 сравнение объектов является более сложным процессом, чем в PHP 4, а также процессом, более соответствующим идеологии объектно-ориентированного языка.

При использовании оператора сравнения (==), свойства объектов просто сравниваются друг с другом, а именно: два объекта равны, если они содержат одинаковые свойства и одинаковые их значения и являются экземплярами одного и того же класса.

С другой стороны, при использовании оператора идентичности (===), свойства объекта считаются идентичными тогда и только тогда, когда они ссылаются на один и тот же экземпляр одного и того же класса.

Следующий пример внесёт ясность.

<?php
function bool2str($bool) {
     if (
$bool === false) {
             return 
'FALSE';
     } else {
             return 
'TRUE';
     }
}

function 
compareObjects(&$o1, &$o2) {
     echo 
'o1 == o2 : '.bool2str($o1 == $o2)."\n";
     echo 
'o1 != o2 : '.bool2str($o1 != $o2)."\n";
     echo 
'o1 === o2 : '.bool2str($o1 === $o2)."\n";
     echo 
'o1 !== o2 : '.bool2str($o1 !== $o2)."\n";
}

class 
Flag {
     var 
$flag;

     function 
Flag($flag=true) {
            
$this->flag $flag;
     }
}

class 
OtherFlag {
     var 
$flag;

     function 
OtherFlag($flag=true) {
            
$this->flag $flag;
     }
}

$o = new Flag();
$p = new Flag();
$q $o;
$r = new OtherFlag();

echo 
"Два экземпляра одного и того же класса\n";
compareObjects($o$p);

echo 
"\nДве ссылки на один и тот же экземпляр\n";
compareObjects($o$q);

echo 
"\nЭкземпляры двух разных классов\n";
compareObjects($o$r);
?>

Результатом выполнения этого кода будет:

Два экземпляра одного и того же класса
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Две ссылки на один и тот же экземпляр
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Экземпляры двух разных классов
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Продолжение (часть 4<<<
PHP.SU
Рубрики:  Полезное
Уроки по PHP
Метки:  

Процитировано 1 раз

M_faBrant   обратиться по имени Пятница, 03 Июня 2011 г. 21:58 (ссылка)
ещё хорошие, понятные учебники - http://www.postroika.ru/html/
Ответить С цитатой В цитатник
Перейти к дневнику

Пятница, 03 Июня 2011 г. 22:37ссылка
M_faBrant, спасибо за ссылку! Только по программированию там материала маловато)
Перейти к дневнику

Пятница, 03 Июня 2011 г. 22:42ссылка
по программированию посмотри на форуме программистов Винград, там есть ссылки и куда смотреть
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку