WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Игра в классики


Прислал: Сергей Парижский [ 13.08.2007 @ 16:40 ]
Раздел:: [ Статьи по PHP ]



Предполагается, что читатель знаком с основными понятия программирования!

Создаем простейший класс MyClass.

Шаблон нашего класса имеет следующий вид:
class MyClass{
var $a;
var $b;

function GetAB()
{
echo "a= ".$this->a." b= ".$this->b;
}
}
Новоиспеченный класс MyClass имеет два свойства — $a и $b. Также есть один метод — GetAB(), который выводит в браузер значение свойств $a и $b. Обратите внимание, что мы не можем просто написать $a, так как класс не поймет, что это за переменная. Для того чтобы указать, что это свойство класса, мы обращаемся к ней через $this–>a.

Для того чтобы объявить объект (экземпляр) класса поступаем так:
$example = new MyClass;
Таким образом $example станет экземпляром класса MyClass. После этого мы можем делать такие вызовы:
$example->a=1;
$example->b=2;
$example->GetAB();
В первых двух строках мы изменяем свойства $a и $b, занося в них значения 1 и 2 соответственно. Затем вызываем метод GetAB(), который выводит нам значение этих свойств. На экран будет выведено:
a= 1 b= 2
Также есть возможность инициализации класса, то есть использовать конструктор, как в C++. Для этого необходимо создать метод с таким же именем, как у класса. Например, перепишем наш класс таким образом, чтобы при его создании свойства сразу инициализировались с указанными значениями или получали значения по умолчанию. Таким образом, нам не придется писать строки с инициализацией значений:
class MyClass{
var $a;
var $b;

function MyClass($a=1, $b=2)
{
$this->a=$a;
$this->b=$b;
}
function GetAB()
{
echo "a= ".$this->a." b= ".$this->b;
}
}

$example = new MyClass(1,1);

$example->GetAB();
Метод MyClass является конструктором и выполняется при создании класса. Заметьте, что при создании класса мы передаем два параметра — это будет значение свойств $a и $b. В этом случае на экран будет выведено:
a= 1 b= 1
Мы могли создать класс, не указывая параметров:
example = new MyClass();
В этом случае на экране мы увидели бы:
a= 1 b= 2
В отличие от C++, в PHP отсутствуют такие методы как деструкторы. Так что завершающие действия вы должны будете вызывать вручную.

Теперь давайте напишем более серьезный класс. Будем создавать массив, размерность которого задается пользователем, при этом дадим возможность заполнять отдельные его ячейки значениями. Также будут методы, позволяющие узнавать сумму всех элементов, максимального и минимального числа в массиве:
<?php
class Arr{ //имя класса
//свойства
var $n; //количество элементов в массиве
var $mass = Array(); //сам массив
var $min1, $max1; //минимальное и максимальное значение
var $summa; //сумма элементов
//методы
function Arr($kolvo=5) //конструктор
{
$this->n=$kolvo; //размер массива
for($i=0;$i<=$this->n;$i++)
$this->mass[$i]=0; //инициализируем массив нулями
}

function Sum() //сумма
{
$this->summa=0; //начальное обнуление суммы
for($i=0;$i<$n;$i++)
$this->summa+=$this->mass[$i]; //суммируем все элементы массива
return $summa; //возвращаем сумму
}

function Set($index,$value) //заполнение массива
{
$this->mass[$index]=$value; /* занесение значения $value в элемент под номером $index */
}

function Get() //вывести массив
{
for($i=0;$i<$this->n;$i++)
echo $this->mass[$i]." "; /* через пробел выводим все элементы массива */
}

function MinMax() /* минимальное и максимальное значение среди элементов массива */
{
/* изначально принимаем за минимальное и максимальное значение первый элемент массива */
$this->min1=$this->mass[0];
$this->max1=$this->mass[0];

for($i=0;$i<$this->n;$i++)
{
/* если максимальное значение меньше, чем текущий элемент, последний принимается за максимум */
if (($this->max1)<($this->mass[$i])) $this->max1=$this->mass[$i];
/* если минимальное значение больше чем текущий элемент, последний принимается за минимум */
if (($this->min1)>($this->mass[$i])) $this->min1=$this->mass[$i];
}
echo "<br>MAX: ".$this->max1."<br> MIN: ".$this->min1; /* вывод максимального и минимального элемента */
}
} //конец класса

$ms = new Arr(3); //создаем массив на три элемента
/* заполняем массив — первый параметр является индексом, второй параметр — это значение */
$ms->Set(0,3);
$ms->Set(1,5);
$ms->Set(2,2);
$ms->Get(); //вывод массива
$ms->MinMax(); //вывод минимального и максимального числа в массиве.
?>
Думаю, по комментариям должно быть все понятно. В браузере мы увидим такой вывод:
3 5 2
MAX: 5
MIN: 2
Первая строка (3 5 2) — это элементы массива, которые мы вывели с помощью метода Get(). Затем функция MinMax() вывела нам максимальный и минимальный элементы массива, которыми являются 5 и 2 соответственно.

Также важный момент в работе с классами — наследование. Класс может наследовать другой класс, таким образом он будет называться производным или дочерним, а наследуемый класс — базовым или родительским. Рассмотрим пример наследования:
class Base
{
function GetBaseStr()
{
echo "Base class<br>";
}
}

class Origin extends Base
{
function GetOriginStr()
{
echo "Origin class<br>";
}
}
Мы объявили два класса — Base с методом GetBasStr() и Origin с методом GetOriginStr(). При объявлении класса Origin мы указали, что он является производным от класса Base. А это значит, что ему доступны все возможности класса Base. Теперь посмотрим, как использовать данный класс:
$example = new Origin;
$example->GetOriginStr();
$example->GetBaseStr();
Как видите, производный класс имеет все возможности базового класса, кроме своих собственных. Другими словами, он расширяет возможности класса, от которого произошел. Если базовый класс Base способен только выводить строку Base class, то для производного класса Origin доступен вывод строк Origin class и Base class.

Первый шаг мы с вами сделали ! Пробуйте, исследуйте, экспериментируйте…

Сайт автора
Мой Компьютер


 :::::  SEO diary пишет 29.08.2007 @ 20:29 
спасибо автору. Пригодилось
 :::::  van4ous пишет 11.10.2007 @ 18:49 
1. Не указана версия языка PHP
2. Не о чем. Имхо, тема не раскрыта вообще!
 :::::  Asker_T пишет 31.10.2007 @ 13:36 
Очень итересно для ознакомления, хороший пример, пригодиться как начинающему, так и среднему программеру, так как подробно описано некоторые правила.

А на счет версии, - это стиль программирования PHP 4, если не ошибаюсь.
 :::::  Андрей пишет 13.11.2007 @ 01:18 
Бездарно, начиная с первых строк.
 :::::  Сакен пишет 25.01.2008 @ 07:48 
Мне очень понравилось спасибо за автору
 :::::  Meine Ecke пишет 26.02.2008 @ 20:38 
спасибо!
 :::::  Барс пишет 10.03.2008 @ 23:43 
van4ous, Андрей - а вы возьмите да напишите лучше. Ненавижу уродов, которые сами нихера не делают, а чужое - ругают
Автору - респектище. Просто и понятно
 :::::  Сергей Парижский пишет 11.03.2008 @ 11:05 
Барс, спасибо за коммент :) На самом деле статья уже очень не новая, я и сам бы мог раскритиковать ее вдоль и поперек. Но все равно, ты правильно сказал - лучше взять и написать лучше, чем кому-то на пустом месте доказывать, что у него все "Г" )))
 :::::  Ruslan пишет 28.10.2008 @ 08:42 
van4ous пишет 11.10.2007 @ 18:49
1. Не указана версия языка PHP
2. Не о чем. Имхо, тема не раскрыта вообще!
Ты сам в начале попеши статьи а потом критиковать будешь!
Мое решение ты "PS_ОЛЕНЬ"!
Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0184531