Курсы Web программирования в Киеве

г. Киев, переулок Ковальский 13, офис 2
e-mail: center@contact.com.ua
229-81-01, 277-42-05, 277-40-42

Курсы программирование PHP. Изучаем новые технологии
Полезные статьи

Учитывая, что язык программирования PHP на сегодняшней день является крайне популярной технологией программирования серверной части сайтов, а также то, что версия PHP 4, по утверждениям многих, была революционной по сравнению с предыдущими, новая пятая по счету версия вызывает обоснованный интерес среди веб-разработчиков.
Однако, по словам создателей PHP 5, ничего революционного в этот раз ожидать не стоит - текущие изменения носят всего лишь ”эволюционный” характер. Тем не менее, сделанные дополнения являются давно ожидаемыми, крайне полезными и весьма своевременными.
В первую очередь переработке подвергся весь механизм работы с объектами. И если в предыдущих версиях объектно-ориентированное программирование на PHP было возможно в минимальной степени, из-за чего и использовалось на практике не часто, то PHP 5 обладает великолепным потенциалом реализации объектного программирования. Кроме этого, PHP обогатился рядом ценных расширений для работы с XML, различными источниками данных, генерации графики и пр.

Курсы Программирование PHP. Изучаем новый механизм работы с объектами

Основное отличие обработки объектов в PHP 5 от PHP 4 заключается в том, что теперь присвоение объекта или его передача в качестве параметра функции происходит по умолчанию по ссылке, а не по значению, как в предыдущей версии.
И если в PHP 4 объекты обрабатывались также как и простые типы данных, что часто приводило к появлению нескольких копий одного и того же объекта, то в PHP 5 такого не происходит, так как каждый объект получает свой собственный числовой идентификатор (handle), который и используется при обращении к объекту.
Таким образом, представленный ниже код, выполненный в PHP 4 и в PHP 5, очевидно может продемонстрировать различия в обработке объектов.
<?php
     class MyClass {
         var $property;
     }
     $obj1 = new MyClass;
     $obj1->property = 1;
     $obj2 = $obj1;
     $obj2->property = 2;
     echo $obj1->property; // Выводит 1 в PHP 4 и 2 в PHP 5
     echo $obj2->property; // Выводит 2
?>
В PHP 4 $obj2 представляет собой копию объекта $obj1, а в PHP 5 и $obj1 и $obj2 указывают на один и тот же объект, так как оператор $obj2 = $obj1 копирует не сам объект, а только его идентификатор.
Различные механизмы обработки объектов имеют место по причине того, что Zend Engine 1, исполнявший сценарии в PHP 4, хранил значения всех типов одинаковым образом в специальной структуре, называемой zval (Zend VALue). В PHP 5 также используется zval, однако теперь в нем хранятся все типы данных, за исключением объектов, которые располагаются в новой структуре, получившей название Object Store. Zval же хранит только идентификаторы объектов, вот почему при присвоении или передачи в функцию передается не сам объект, а только его идентификатор.
Данное улучшение позволит значительно увеличить производительность PHP сценариев, где активно используется работа с объектами.

Курсы программирование PHP. Изучаем механизм клонирование объектов

Итак, в PHP 5 объекты передаются по ссылке. Однако, если же необходимо провести именно копирование объекта, как это делалось в PHP 4, то в PHP 5 придется явно использовать новый метод __clone(). При этом объект копируется со всеми своими методами, свойствами и их значениями:
<?php
     class MyClass{
         var $property;
     } 
     $obj1 = new MyClass;
     $obj1->property = 1;
     $obj2 = clone $obj1;
     echo $obj1->property; // Выводит 1
     echo $obj2->property; // Выводит 1
     $obj2->property = 2;
     echo $obj2->property; // Выводит 2
?>
Следует обратить внимание на то, что к методу __clone() нельзя обратиться непосредственно и для копирования объекта используется ключевое слово clone.
Метод __clone() необязательно описывать в самом классе, однако его явное определение, т.е. перегрузка, позволит изменить значения свойств копируемого объекта:
<?php
     class MyClass{
         var $property;
         function __clone() {
             $this->property = 2; 
         }
     } 
     $obj1 = new MyClass;
     $obj1->property = 1;
     $obj2 = clone $obj1;
     echo $obj1->property; // Выводит 1
     echo $obj2->property; // Выводит 2
?>
Метод __clone() не может принимать никакие аргументы, однако позволяет обратиться к исходному объекту через указатель $this и получаемому в результате копирования объекту через указатель $that. 

Курсы программирование PHP. Изучаем доступность элементов класса

В PHP 5 введены спецификаторы доступаpublic, protected и private, которые позволяют указать степень доступа к свойствам и методам класса.

К общедоступным (public) свойствам и методам можно получить доступ без каких либо ограничений.
Защищенные (protected) элементы класса доступны внутри класса, в котором они объявлены, и в производных от него классах.
Частные (private) элементы доступны только в классе, в котором они объявлены.
<?php
     class MyClass {
         public $public = "общедоступный элемент";
         protected $protected = "защищенный элемент";
         private $private = "частный элемент"; 
         public function printPrivate() {
             echo $this->private; 
         }
     } 
     $obj1 = new MyClass;
     echo $obj1->public; // Выводит "общедоступный элемент" 
 
     class MyClass1 extends myClass {
         public function printProtected() {
             echo $this->protected; 
         }
     } 
     $obj2 = new MyClass1();
     $obj2->printProtected(); // Выводит "защищенный элемент"
 
     $obj1->printPrivate(); //Выводит "частный элемент"
 
     echo $obj1->protected; // Вызывает ошибку доступа 
     echo $obj1->private; // Вызывает ошибку доступа
?>
Если не указывать ни один из спецификаторов, то по умолчанию элемент будет иметь уровень доступа public. Такой же уровень доступа получают свойства, для объявления которых использовалось устаревшее и не рекомендуемое к использованию в PHP 5 ключевое слово var.

Курсы программирование PHP. Изучаем конструкторы и деструкторы


Метод-конструктор вызывается автоматически при каждом создании объекта. И хотя конструктор появился в PHP давно (эту роль выполнял метод, названный именем класса), но в PHP 5 была изменена схема именования конструктора - метод __construct() является теперь конструктором класса.
Аналогично, при уничтожении объекта вызывается специальный метод __destruct() – деструктор класса.
<?php
     class MyClass {
         function __construct() {
             echo "Запущен конструктор";
         }
         function __destruct() {
             echo "Запущен деструктор";
         } 
     }
     $obj = new MyClass(); // Выводит "Запущен конструктор"
     unset($obj); // Выводит "Запущен деструктор"
?>
Если же необходимо вызвать конструктор или деструктор базового класса, то необходимо это делать явно, через указатель parent.
<?php
     class MyClass {
         function __construct() {
             echo "Запущен конструктор базового класса";
         }
         function __destruct() {
             echo "Запущен деструктор базового класса";
         } 
     }
     class MyClass1 extends MyClass {
        function __construct() {
            parent::__construct();
        }
        function __destruct() {
            parent::__destruct();
        } 
    }  
    $obj = new MyClass1(); // Выводит "Запущен конструктор
                                       // базового класса"
    unset($obj); // Выводит "Запущен деструктор базового класса"
?>
Для целей совместимости с предыдущей версией PHP 5 поступает следующем образом: если при создании объекта в классе не найдет конструктор __construct(), то PHP пытается выполнить метод, имя которого совпадает с именем класса.  Т.о. конструкторы PHP 4 будут работать с PHP 5 без каких-либо изменений кода.

      final class MyClass {
          // Код описания класса
      }
      // Следующий код вызывает ошибку
      // порождения от финального класса
      class MyClass1 extends MyClass {
          // Код описания класса
      }
?>
Если класс определен как final, то и все методы данного класса автоматически становятся финальными, таким образом, определять их явно как final уже нет необходимости.
Определять же свойства класса как финальные – недопустимо.

Преподаватель курсов web программирования
Работы выпускников курсов web программирования
Компьютерные курсы Киева
Курсы 3D max
Курсы Autocad
Курсы Web дизайна
Курсы Seo
Курсы дизайна
Курсы компьютерной графики
Курсы flash
Курсы Windows
Курсы ms sql server
курсы бухгалтеров
курсы дизайна
Курсы ArchiCAD
Основная тематика сайта:

курсы web программирования и все, с ними связанное: обучение PHP, уроки программирования PHP для web, программирование web-сайтов, программирование на PHP, изучение PHP, создание сайтов на PHP. Записаться на курсы web программирования PHP (Киев)

: (044) 277-42-05, 229-81-01
Создание сайта. Clear Design, Киев