PHP: Шпаргалка по ООП

       PHP      php    шпаргалки    ООП      3649    
PHP: Шпаргалка по ООП (основы)

Объектно-ориентированное программирование давно уже стало неотъемлемой частью работы большинства программистов. Процедурный стиль хорош для выполнения мелких задач. Для более сложных решений, безусловно, использования ООП будет оправданным. К тому же, сейчас все современные фреймворки активно используют ООП. Ниже список основ и полезных фишек. Список пополняется)

Важно!

  • свойство объекта — это переменная
  • метод объекта — это функция

Создание объекта:

$obj = new CassName();
$obj->methodClass(); // это обращение к методу класса
$obj->svoistvoClass; // это обращение к своиству класса

Конструктор и деструктор:

function __construct(){} // это метод, который срабатывается во момент создания объекта
function __destruct(){} // это метод, который срабатывается во момент удаления объекта
//!!!важно!!!
//в конструктор можно передавать переменные
//в деструктор нельзя, так как если передать переменную, которая будет удалена, то это приведет к ошибке

Вспомогательные константы:

echo __CLASS__; // выведет название класса
echo __METHOD__; // выведет название объект::метод

Спецификаторы доступа или (инкапсуляция)

public //- могу получить доступ из кода и из классов(родительский и наследуемый)
protected //- могу получить доступ только из классов(родительский и наследуемый)
private //- могу получить доступ только из родительского класса

Указание на родительский метод:

parent::classMethod();

Перебор свойств объекта:

foreach ($objName as $name=>$value) {
  echo "$name: $value";
}
// $objName можно заменить на $this (если я использую это в классе), чтоб указать, что можно использовать любой объект, а не какой-то конкретно

Костанты склассов:

const CONST_NAME = 'данные константы'; // объявление константы в классах
echo USER::CONST_NAME; // вывод константы вне класса, где USER это название класса, а CONST_NAME это название константы
echo self::CONST_NAME; // вывод константы внутри класса, где CONST_NAME это название константы

Проверяем если объект является экземпляром класса:

if ($object_name instanceof ClassName) {}

Исключения (они нужны для отлова ошибок):

try{
 // some code
 if ($error) throw new Exceprion("Тут ошибка");
} catch(Extension $e) {
  echo $e->getMessage();
}

Перегрузка стандартных PHP классов (то есть наследование класса):

class MyException extends Exception
{
	function __construct($msg) {
	  parent::__construct($msg);
	}
}

Важно и полезно

Абстрактные классы и интерфейсы используются для описания наших классов, то есть здесь мы задаем шаблоны по которым будут работать наши наследуемые классы. Абстрактный класс (abstract) - это шаблон, который содержит в себе объявление методов если в абстрактном классе есть абстрактный метод, то он должен быть перегружен

abstract class MyClass {}

Интерфейсы - это тоже абстрактный класс, но который содержит только абстрактные методы:

// Так же нужно перегружать методы
interface MyClass{}
class MyNaslednik implements MyClass{}

Метод final нельзя перегрузить:

final function Mymethod(){}

Автоматическая подгрузка классов

Если представить себе ситуацию, что вы используете несколько экземпляров разных классов и чтоб избавиться от бесконечных include (require), лучше один раз указать ФУНКЦИЮ!!! __autoload()

// Это функция, а не метод
function __autoload($className){
  include($className);
}

Магические методы __set(), _get(), __call() и __toString()

__set() - срабатывает автоматически в том случае, когда мы присваиваем какое-то значение не известному(не объявленному) свойству

function __set($objName, $objValue) {
  $this->someVar[$objName] = $objValue;
}

_get() - срабатывает автоматически в том случае, когда мы пытаемся получить значение не известного(не объявленного) свойства

function __get($objName) {
  return $this->someVar[$objName];
}

__call() срабатывает автоматически в том случае, когда мы пытаемся вызвать не известный(не объявленный) метод

function __call($methodName, $params){}

__toString() - срабатывает автоматически в том случае, когда мы пытаемся вывести объект

$obj = name Class();
echo $obj;
function __toString() {
  // some code ...
}
Комментарии временно оключены

Поиск

Популярное