П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4097 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6758 раз(а).

Учебник HTML.
Просмотров 3719 раз(а).

Руководство по PHP5.
Просмотров 5992 раз(а).

Хостинг через призму DNS.
Просмотров 4814 раз(а).

Подборка текстов стандартных документов.
Просмотров 56246 раз(а).

Учебник PHP - Самоучитель
Просмотров 3706 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8345 раз(а).

Внешние атаки...
Просмотров 4566 раз(а).

Учебник PHP.
Просмотров 3175 раз(а).

SSI в примерах.
Просмотров 176 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
Назад Вперёд

Глава 13. Классы и Объекты

Содержание
class
extends
Constructors
::
parent
Сериализация объектов - объекты сессий
Магические функции __sleep и __wakeup
Ссылки внутри конструктора

class

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

<?php

class Cart
{
    var $items;  //элементы в нашей shopping cart

    // Добавить $num артикулов $artnr в cart

    function add_item ($artnr, $num)
    {
        $this->items[$artnr] += $num;
    }
   
    // Изъять $num артикулов $artnr из cart
 
    function remove_item ($artnr, $num)
    {
        if ($this->items[$artnr] > $num) {
            $this->items[$artnr] -= $num;
            return true;
        } else {
            return false;
        }   
    }
}
?>

Здесь определён класс Cart, состоящий из ассоциативного массива артикулов/articles в карте/cart и двух функций для добавления и удаления элементов этой cart.

Внимание!

Это предупреждение верно для PHP 4.

Имя stdClass используется внутренне Zend-машиной и зарезервировано. Вы не можете иметь в РНР класс с именем stdClass.

Имена функций __sleep и __wakeup являются "магическими" в PHP-классах. Вы не можете иметь функции с такими же именами в любом вашем классе, если только вам не нужна "магическая" функциональность, ассоциированная с ними. См. далее.

PHP резервирует все имена функций, начинающиеся с __ как магические. Рекомендуем не использовать в РНР имена функций с __ , если только вам не нужна какая-нибудь задокументированная магическая функциональность.

Примечание: в PHP 4 только константные инициализаторы для var-переменных допустимы. Для инициализации переменных с неконстантными значениями вам необходима функция инициализации, которая вызывается автоматически, когда конструируется из класса. Такая функция называется конструктором (см. далее).

<?php
/* Это не будет работать в PHP 4. */
class Cart
{
    var $todays_date = date("Y-m-d");
    var $name = $firstname;
    var $owner = 'Fred ' . 'Jones';
    var $items = array("VCR", "TV");
}

/* Вот как это должно делаться. */
class Cart
{
    var $todays_date;
    var $name;
    var $owner;
    var $items;

    function Cart()
    {
        $this->todays_date = date("Y-m-d");
        $this->name = $GLOBALS['firstname'];
        /* etc. . . */
    }
}
?>

Классы это типы, то есть они являются шаблонами реальных переменных. Вы должны создавать переменную нужного типа операцией new.

<?php
$cart = new Cart;
$cart->add_item("10", 1);

$another_cart = new Cart;
$another_cart->add_item("0815", 3);

Здесь создаются объекты $cart и $another_cart, оба от класса Cart. Функция add_item() объекта $cart вызывается для добавления 1 элемента артикула номер 10 в $cart. 3 элемента артикула номер 0815 добавляются в $another_cart.

И $cart, и $another_cart имеют функции add_item(), remove_item() и элементы переменных. Это разные функции и переменные. Вы можете представить эти объекты как директории файловой системы. В файловой системе вы можете иметь два разных файла README.TXT, если они находятся в разных директориях. Как и с директориями, где необходимо вводить полный путь к файлу, чтобы достичь его из директории верхнего уровня, вы должны специфицировать полное имя функции, которую хотите вызвать: в терминологии PHP, директория верхнего уровня это глобальное пространство имён/global namespace, а разделителем имён служит ->. Таким образом, имена $cart->items и $another_cart->items именуют две различные переменные. Заметьте, что переменная именуется $cart->items, а не $cart->$items, то есть имя переменной в PHP имеет только один знак dollar.

// корректно, один символ $
$cart->items = array("10" => 1); 

// неверно, поскольку $cart->$items становится $cart->""
$cart->$items = array("10" => 1);

// корректно, но может и не быть тем, что вы предполагаете:
// $cart->$myvar становится $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);

Внутри определения класса вы не знаете, под каким именем объект будет доступен в вашей программе: на момент написания класса Cart не было известно, что объект будет называться $cart или $another_cart. Таким образом, вы не можете написать $cart->items в самом классе Cart. Вместо этого, чтобы иметь возможность доступа к переменным и функциям внутри класса, можно использовать псевдопеременную $this, которая может читаться как 'моя собственная' или 'текущий объект'. То есть '$this->items[$artnr] += $num' можно прочитать как 'добавить $num к счётчику $artnr элемента моего собственного массива' или 'добавить $num к счётчику $artnr элемента массива внутри текущего объекта'.

Примечание: имеются отличные функции для работы с классами и объектами. Вы можете просмотреть их в разделе Class/Object-функции.


Назад Оглавление Вперёд
Функции переменных Вверх extends


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





Copyright © 2005-2016 Project.Net.Ru