Функции php
Пользовательские функции:
function foo($arg1 = val1, $arg2 = val2, /* ..., */ $argN = valN) {
...
return $retVal;
}
PHP поддерживает рекурсию, передачу аргументов по ссылке (&$var), значения аргументов по умолчанию и списки аргументов переменной длины (при помощи специальных функций).
Функции могут быть описаны прямо в точке их использования.
Все функции и классы PHP имеют глобальную область видимости (даже вложенные)
PHP не поддерживает перегрузку, удаление или переопределение функций (за исключением наследования в классах)
Имена функций регистронезависимы, тем не менее, более предпочтительно вызывать функции так, как они были объявлены.
Так же как "переменные переменных" могут использоваться "переменные функций": $func('test');
function_name(); // Вызов функции function_name
$c = 'function_name';
$c(); // Вызов функции function_name,
===========================================================
Классы и объекты
Основы ООП
Смещение приоритетов в процессе программирования от функциональности приложения к структурам данных.
Суть - описание предметной области как системы сущностей. Выполнение программы = взаимодействию этих сущностей между собой. Что это нам дает?
- простота понимания, более наглядное представление
- облегчает разработку и сопровождение: структура -> модульность -> расширяемость, безопасность
Класс - это базовое понятие ООП. Объект - реализация класса
Объектно-ориентированное программирование основано на 3 принципах:
- Инкапсуляции;
- Полиморфизме;
- Наследовании.
Инкапсуляция - объединение данных с методами (или другими функциями), обрабатывающими эти данные. В результате этого программист работает непосредственно с этим объектом, что приводит к упрощению программы, поскольку из нее исключаются второстепенные детали.
Полиморфизм - возможность объектов с одинаковой спецификацией иметь различную реализацию.
Наследование - описание нового класса на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.
<?php
// Создаем новый класс Coor:
class Coor {
// данные (свойства):
var $name;
const constant = 'значение константы';
// методы:
function Getname() {
return $this->name;
}
}
// Создаем объект класса Coor:
$object = new Coor;
// Получаем доступ к членам класса:
$object->name = "Alex";
echo $object->name;
echo $object->Getname();
?>
В контексте класса можно создать новый объект через new self и new parent.
Наследование:
class Child extends Test {}
Доступ к родительским методам возможен через parent::метод()
ПХП не поддерживает множественное наследование
конструкторы и деструкторы - необязательные методы, автоматически выполняются при создании/уничтожении объекта.
void __construct ([ mixed $args [, $... ]] )
void __destruct ( void )
Конструкторы/деструкторы классов-родителей не вызываются автоматически, если класс-потомок определяет собственный конструктор/деструктор в зависимости от количества передаваемых параметров могут вызываться разные конструкторы.
В ПХП4 имя конструктора должно совпадать с именем класса. В целях совместимости поддерживаются оба варианта (приоритет у __construct).