Потихоньку изучаю ооп и решил выложить сюда то что получилось в процессе изучения, может пригодится новичкам, то есть таким же как и я в ооп Сам код с комментариями, поэтому не стал расписывать отдельно взятые куски, ибо меня лично самого это раздражает. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="keywords" content="контент"> <meta name="description" content="описание"> <title>Заголовок страницы</title> </head> <body> <?php // ТИПЫ СУЩЕСТВУЮЩИХ ДАННЫХ //$int = 1; целое число //$string = "Мне 29 лет"; строка //$float = 3.14; числа с плавающей точкой, дробные числа //$bool = false; логический тип данных (true или false) // КЛАССЫ И ОБЪЕКТЫ //var - обязательный параметр в классе, с его помощью объявляется переменная внутри класса class Human { var $arms = "2 руки"; var $legs = "2 ноги"; } $rus = new Human (); echo $rus->arms; echo "<br>"; echo $rus->legs; echo "<br>"; $rus->arms = "3 руки"; echo $rus->arms; echo "<hr>"; class Musketter { var $heart = "отважное сердце"; var $hand = "сильная рука"; var $sword = "шпага"; } $atos = new Musketter (); echo "<p><strong>Без изменений</strong></p>"; echo $atos->heart; echo "<br>"; echo $atos->hand; echo "<br>"; echo $atos->sword; echo "<p><strong>С изменениями</strong></p>"; $atos->heart = "отважная душа"; $atos->sword = "дубина"; echo $atos->heart; echo "<br>"; echo $atos->hand; echo "<br>"; echo $atos->sword; echo "<hr>"; // ЦЫКЛЫ FOR И WHILE $var = "экспрессия"; $c = 0; //этот цикл эквивалентен while /* for($i = 0; $i <= 10; $i++) { echo "i = ".$i." c = ".$c."<br>"; $c = $c+$i; }*/ while($c <= 10) { echo "$var<br>"; $c++; } echo "<hr>"; // МАССИВЫ $dog = "собака"; $cat = "кошка"; $turtle = "черепаха"; $array = array('собака', 'кошка', 'черепаха'); //загоняем массив данных в переменную $array и говорим ей что она есть массив echo $array[0]; //выводим первый элемент массива (отсчет начинается с нуля) $pets[] = "собака"; $pets[] = "кошка"; $pets[] = "черепаха"; //смотрим содержание массива и его ключей echo "<pre>"; print_r ($pets); echo "</pre>"; $pets[1] = "котенок";//изменяем значение элемента массива с ключом 1 //смотрим измененное содержание массива echo "<pre>"; print_r ($pets); echo "</pre>"; //еще один способ образовать массив, только не с числовыми ключами, а со строковыми $names = array( 'Филипп' => 'Киркоров', 'Алла' => 'Пугачева' ); //выводим элемент массива по его ключу [Филипп] /* echo $names[Филипп]; echo "<pre>"; print_r ($names); echo "</pre>";*/ //проходимся циклом по массиву и выводим его содержание в виде: ключ->элемент с подсчетом кол-ва элементов foreach($names as $key => $val) { echo ++$count." элемент <br>"; echo $key." => ".$val."<br>"; } echo "<hr>"; //ФУНКЦИИ //в подобном виде получается много кода из-за дублирования однотипных действий, с помощью функций упрощается и уменьшается код /* $s = 10; for($i = 0; $i < $s; $i++) { $sum = $sum + $i; } echo $sum."<br>"; $s = 8; for($i = 0; $i < $s; $i++) { $sum2 = $sum2 + $i; } echo $sum2;*/ //функция sum с фходным параметром $s который можно получить из вне функции function sum($s) { for($i = 0; $i <= $s; $i++) { $sum = $sum + $i; } echo $sum; } //входной параметр может быть определен как в переменной, так и на прямую /* $s = 10; sum($s);*/ sum(10); //входной параметр напрямую echo "<br>"; sum(8); echo "<hr>"; //МЕТОДЫ class My_method { //Функция объявленная в теле класса - называется методом function sum($s) { for($i = 0; $i <= $s; $i++) { $sum = $sum + $i; } //echo $sum; return $sum; //возвращает результат цикла for во входной параметр $s функции sum() } function out() { echo "длинный, длинный текст"; } //при создании этого объекта (My_method) с именем класса, создается автоматически конструктор //и вызывается при инициализации класса ( $obj = new My_method(); ) function My_method($var) { echo "Привет, я конструктор (constructor) и var = ".$var; } //еще один способ вызвать метод конструкт /*function __construct() { echo "Привет, я конструктор (constructor)"; }*/ } $obj = new My_method(10); //так объявляются объкты класса echo "<br>"; //$obj->sum(10); $var = $obj->sum(10);// помещаем возвращенный результат в переменную $var echo $var."<br>"; $var = $obj->out(); echo $var; echo "<hr>"; //НАСЛЕДОВАНИЕ class Pipl { var $hands = "2 руки"; var $lags = "2 ноги"; var $head = "1 голова"; function action() { echo "Я могу ходить"; } } //этот класс наследует свойства класса Pipl при помощи extends class Doctor extends Pipl { var $knife = "нож"; } $obj = new Doctor(); echo $obj->head."<br>"; $obj->action(); echo "<br>"; class Father { var $muskules = "сильные мускулы"; } class Mother extends Father { var $eyes = "красивые глаза"; } //этот класс должен унаследовать св-ва двух классов выше, или любого из них class child extends Mother { var $mind = "светлый ум"; } $obj = new child(); echo $obj->muskules; echo "<hr>"; //МОДИФИКАТОРЫ ДОСТУПА private, protected, public и static class Brother { private $big = "большой человек"; //private - используется только внутри своего класса protected $seksi = "сексуальный"; //protected - может использоваться внутри своего класса и в наследующих его классах public function work() { //public - можно использовать везде, как в наследующих классах, так и в объекте echo "я умею работать"; } } class Sister extends Brother { public static $hello = "привет, я статик"; //вызывается напрямую без объявления объекта типа: $obj = new Brother(); } $obj = new Brother(); $obj->work(); //так как $work является public, то можно использовать везде echo "<br>"; $obj1 = new Sister(); $obj1->work(); // $obj1->seksi; так будет ошибка, ибо $seksi является protected и используется только внутри класса, либо внутри в наследующих классах echo "<br>"; echo Sister::$hello; //обращение на прямую к static без объявления объекта ?> </body> </html>