Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 135) Курс PHP: Объектно-ориентированное программирование


Школа программирования

135) Курс PHP: Объектно-ориентированное программирование

Письмо от Павла:

я давно читаю вашу рассылку, но в некоторых случаях вы показываете длинный путь решениЯ, к приеру:

    while ( ! feof ( $fp ) ) { // пока не конец файла
       $buf = fgets( $fp ); // вводим строку из файла в переменную $buf
       print $buf . "<p>"; // выводим ее на экран
    }

куда проще сделать так:

   while ($buf=fgets($fp,1024) ) { // пока не конец файла
       print $buf . "<p>"; // выводим ее на экран
    }

да и ошибка (не указание кол-ва символов в fgets-е)- это некрасиво ;) удачи ;)


Объектно-ориентированное программирование

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

Каждый объект - это экземпляр соответствующего класса (сложного типа данных).

Описание класса задается конструкцией вида

  class название-класса
  {

  }

Внутри класса задаются его свойства, поля (внутренние переменные), перед которыми указывается ключевое слово var:

  class MyClass
  {
  var $x;
  var $zagruzka;
  }

Помимо свойств, в описание класса включаются и методы, предназначенные для работы с этими свойствами. Они представляют собой описания функций PHP:

  class MyClass
  {
  var $x;
  var $zagruzka;

  function sum() {
  // тело функции
  // ...
  }

  }

Чтобы явно указать, что внутри функции-метода происходит обращение к внутренним переменным класса, перед именем каждой переменной надо указывать "$this->" ($this - это условное обозначение текущего экземпляра объекта, своеобразная ссылка на самое себя). Знак "$" перед последующим названием поля не ставится.

Создадим, например, класс, имитирующий поведение массива.

  class MyArray
  {

  }

Пусть внутри него будет реальный массив, доступ к которому тем не менее от внешнего пользователя будет скрыт:

  class MyArray
  {
  var $items = array();
  }

Мы хотим, во-первых, добавлять элементы в массив, во-вторых, устанавливать значения определенных элементов, и в-третьих получать доступ к элементам. Кроме того, нам понадобится функция получения числа элементов в массиве.

  class MyArray
  {
  var $items = array();
  var $ilen=0; // число элементов в массиве

  function add( $item ) {
  // добавить элемент
  }

  function get( $inum ) {
  // получить значение элемента
  }

  function set( $inum, $item ) {
  // установить значение элемента
  }

  function count() {
  // длина массива
  }

  }

Добавление:

  function add( $item ) {
  // добавить элемент
  $this->items[$this->ilen ] = $item;
  $this->ilen ++;
  }

Значение элемента извлекаем обычным способом:

  function get( $inum ) {
  // получить значение элемента
  return $this->items[$inum ];
  }

При этом желательно проверить, корректен ли индекс массива - параметр $inum.

Задаем значение схожим образом:

  function set( $inum, $item ) {
  // установить значение элемента
  $this->items[ $inum ] = $item;
  }

Число элементов определяется очевидным способом:

  function count() {
  // длина массива
  return $this->ilen;
  }

Все эти описания должны быть расположены внутри класса.

Перед использованием объекта его необходимо создать, делается это с помощью команды new и следующим за ней именем класса:

  $myitems = new MyArray();

Теперь переменная $myitems будет экземпляром класса MyArray(), к ее методам можно обращаться из работающей программы:

  for( $i=0; $i<100; $i++ )
   $myitems->add( $i*2 );

  for( $i=0; $i<100; $i++ )
   print "<p>" . $myitems->get( $i );

Задание. Напишите класс, моделирующий работу стека (первый вошел, первый вышел) - в него можно добавлять и забирать элементы, каждый из элементов помещается (добавляется) всегда в самый конец стека, а после изъятия (изымается всегда последний помещенный в него элемент) удаляется из стека.


(c) 2004-2006 Сергей Бобровский bobrovsky as russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса всегда тут:
http://www.infiltration.ru/p/


Вышел мой учебный курс "Технологии Delphi. Разработка приложений для бизнеса".
http://shop.piter.com/book/978591180282/

В книге описаны десятки технологий, каждой из которых посвящены отдельные книги. Таким образом, купив одну мою книгу, вы существенно сэкономите :) В книге полностью описан язык Delphi (версия 2006, полностью совместимая с Turbo Delphi) для обеих платформ - Win32 и .NET. Охвачены также темы работы с файлами на этих платформах, создания файл-серверных, клиент-серверных, распределенных приложений, веб-программ (Indy, ASP.NET, веб-сервисы). Описаны языки SQL и OCL. Немало глав посвящены истории программирования и различных технологий. Особое внимание уделено созданию программ с помощью технологии ECO и языка моделирования UML - программы фактически рисуются, и теперь даже для создания корпоративных приложений и их переноса в Интернет не обязательно знать программирование!
Отдельная часть отведена технологиям организации групповой работы, управления требованиями, контроля версий, локализации и тестирования.
Тут подробнее про книгу.

Другие мои книги, которые пока доступны в продаже:


Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное