ООП в PHP

Все опытные программисты давно уже используют объектно-ориентированное программирование. Оно используется везде, да и не модно уже кодить на процедурке. Начинающим же очень сложно перейти с процедурного стиля на ООП, непонятно что за символы и откуда они воообще берутся. Еще и переменования переменной в свойство, а функции в метод отбрасывает все желание учить это и многие начинающие программисты именно на этом и ломаются.

Процедурное программирование оно хорошо для мелких задач, но если уже речь идет о большом проекте, то лучше ООП. Тем более что все фреимворки использут ООП в своей архитектуре. А FrameWork это скорость. А если нужна скорость, то без ООП увы никак.

И так. Тут я приведу список основ PHP ООП, которые всегда должны быть под рукой у начинающего 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()

__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()
{
   // что-то сделать...
}

Поделитесь статьей со своими друзьями