Статьи, посвященные различным языкам программирования.

Цикл for
Синтаксис цикла: for (часть А; часть B; часть C){ инструкция 1; инструкция 2; } В фигурных скобках указываются операторы, выражения, инструкции, то, что должно выполняться определенное количество раз. Внутри круглых...

Циклы while, do while
Цикл while Синтаксис: while (условие){ инструкция 1; инструкция 2; } Условие в скобках должно быть true, чтобы цикл сработал. Простой пример: $sum = 1 while ($i$sum += 3; $i++; print($sum); // вывод $sum } Цикл for и цикл while взаимозаменяемы. Тут у...

Цикл foreach
Для того, чтобы пройтись по всем ячейкам ассоциативного массива, применяют цикл foreach. Синтаксис см. ниже. В скобках указываем массив, по которому будем бегать. Потом слово ‘as’ и любая переменная. PHP зайдет в...

Пользовательские функции
Есть код, который мы запустили, он выполнился один раз и все. Но есть блоки кода, которые могут повторяться больше, чем один раз. Если кусок кода используется более 1 раза, под него надо писать функцию. Т.е. функция — это...

Работа функций и рекурсия
Статические переменные Когда мы внутри функции определяем значение переменной — это локальная переменная. function Test(){ $a = 0; echo $a++; } Test(); //Выведет 0 Test(); //Выведет 0 Test(); //Выведет 0 Т.е. трижды вызвав функцию Test, получим...

Встроенные функции
Встроенных функций в php много, но не все они доступны. Часть стандартных функций находятся в самом ядре php, а большая часть раскидана по расширениям, не все расширения по умолчанию подключены. Чтобы узнать, какие функции...

Классы и объекты
Существует процедурное программирование, т.е. переменные, функции и др. А есть объектно-ориентированное программирование (ООП). Здесь мы начинаем думать сущностями (объектами). Классы и объекты Один из основных...

Конструктор и деструктор класса
Конструктор класса — это специальный метод, который автоматически вызывается в момент создания объекта (например: $car=new Car ()). В php конструктор класса носит название __construct(двойное подчеркивание): [php] function __construct(){ echo...

Псевдо-константы METHOD и CLASS
В языке php есть псевдо-константы. Их имя начинается и заканчивается двойным подчеркиванием (__METHOD__ и __CLASS__). [php] class MyClass { function myMethod(){ echo "Вызов метода ", __METHOD__; //подставится имя метода } function getClassName(){ echo "Имя класса ", __CLASS__;...
Копирование объектов, передача по ссылке
В php5 у нас появились новые принципы работы с объектами: копирование объекта; передача объекта по ссылке.Рассмотрим фрагмент кода: [php] $obj2 = $obj1; //копирование объекта в PHP4 $obj2 = &$obj1; //передача по ссылке в PHP4 $obj2 = $obj1;...

Наследование (полиморфизм) классов
Один класс может наследовать другой. И все, что есть у класса-родителя, автоматом переходит к классу-наследнику. Рассмотрим пример: class Car { public $numWheels = 4; function printWheels() { echo $this->numWheels; } } class Toyota extends Car { //наследование с...

Перегрузка методов
Рассмотрим код ниже. У нас есть класс-родитель Car. В нем описан метод printWheels. Есть второй класс Toyota, который наследует класс Car. Что будет, если в классе Toyota мы опишем метод printWheels, такой же как у родителя? Это будет...

Модификаторы (спецификаторы) доступа
Различают три модификатора доступа: public (общедоступный) — позволяет иметь доступ к свойствам и методам классам из любого места: из класса, в котором он объявлен, из класса-наследника, из вне класса. protected (защищенный) —...

Обработка исключений
Такая возможность появилась в PHP5. Идея обработки исключений состоит в том, что: у нас есть кусок кода, в котором может произойти ошибка. Мы этот кусок кода помещаем в блок под названием ‘try’. В том месте, где ошибка...

Константы, абстракции, интерфейсы
Перебор свойств объекта Мы можем перебрать свойства объекта в цикле foreach. [php] class Human { public $name; public $yearOfBorn; function __construct($name, $yearOfBorn){ $this->name = $name; $this->yearOfBorn = $yearOfBorn;}} $billGates = new Human(‘Bill Gates’,1955); foreach($billGates as...

Статические свойства и методы класса
Финальный метод — это метод, который нельзя перегружать. Это делается на практике не так часто по причине: метод еще не доработан или планирую в будущем его изменить. Пример: [php] class Mathematics { final function countSum($a,$b){...

Статические свойства и методы класса
Статические переменные — переменные, которые внутри функции сохраняют свое значение. Соответственно, могут быть статические свойства и методы класса. Эти свойства и методы принадлежат только своему классу (как и...

Ключевое слово instanceof
У нас часто класс наследует один класс, а тот в свою очередь наследует другой класс и интерфейс, и т.д. Нам надо узнать является ли данный конкретный объект наследником какого-то класса или интерфейса. Т.е. в цепочке...

Функция autoload
Представим ситуацию: мы создали объект от какого-то класса, а самого класса в коде нет. В итоге php выдаст ошибку. Поэтому, если php не может найти тот или иной класс, то php перед выдачей ошибки ищет функцию __autoload, передавая...

Методы доступа к свойствам объекта
Представим ситуацию: есть некоторый класс без свойств. Мы создали какой-то объект этого класса. И через объект обращаемся к свойству класса (такое свойство в классе не описано). Что будет? Никакой ошибки не будет. PHP сам...

Перегрузка вызова несуществующих методов
Есть такое понятие, которое в php недоступно — перегрузка функций. Если бы в php можно было так делать, мы бы написали: function A (){} function A ($a){} function A ($a, $b){} function A (int $a, string $b, int $c){} Это и есть перегрузка функции. Т.е. теперь, если...

Метод __toString ()
Допустим, мы хотим вывести значение объекта таким методом: class A { } $o = new A(); echo $o;//echo всегда конвертирует значение в строку Ничего не получится, выскочит ошибка (объект класса невозможно конвертировать в строку). Хотя в...

Разименование объектов
Идея разименовывания объектов состоит в том, что можно создавать объект ‘на лету’ (т.е. динамически); обращаться к его методу, не создавая самого объекта, т.е. в виде переменной. Рассмотрим пример. Есть два...

Уточнение типа класса
Т.е. мы можем указывать в виде имен классов или интерфейсов, что нам должен прийти объект, у которого в ‘предках’ есть, например, такой интерфейс или какой-то класс. Т.е. как в строгой типизации пишем int что-то или array...

Сериализация
У нас есть какой-то класс, мы создали от него объект. Если мы хотим все это сериализовать, то нужно описать два магических метода: __sleep и __wakeup. Метод __sleep возвращает массив, т.е. мы должны вернуть массив тех свойств,...

Автозагрузка классов (функция __autoload)
Когда классов немного, можно подгружать их с помощью include/require, но если классов становится очень много, на помощь приходит функция __autoload (). Синтаксис функции: function __autoload ($class_name){ require_once ($class_name.'.inc'); } $obj = new myClass(); //вызов...

Стандартные объекты: Global, Math, Date
Объект Global Данный объект не нужно создавать через оператор new. По умолчанию он уже существует. И когда мы обращаемся к методам этого объекта, не нужно писать — ‘имя объекта-точка-метод’. Изначально в него...

Объектная модель браузера, объекты браузера
Объектная модель браузера (ОМБ) — множество объектов, которые создает браузер при загрузке страницы. В рамках ОМБ существует еще объектная модель документа (Document Object Model — DOM), она отвечает за сам html документ. В ОМБ...

Таймеры: интервалы и таймауты
Таймеры позволяют отмерять промежутки времени. Например, заводим таймер на 1 минуту, и через 1 минуту он срабатывает (запускается какой-то код на javaScript). Таймеры бывают 2-х видов: таймаут и интервал. Таймаут — таймер...

Объекты navigator, history, screen, location
Объект navigator Данный объект является чисто информационным. Он предоставляет информацию о браузере. В качестве примера использования navigator выведем все свойства браузера: <script type="text/javascript"> document.writeln(); for (var property in...